Browse Source

Avoid crashes at shutdown due to printf() in global destructors.

miguelfreitas
Gavin Andresen 12 years ago
parent
commit
cac6b389d1
  1. 10
      src/util.cpp

10
src/util.cpp

@ -220,8 +220,14 @@ inline int OutputDebugStringF(const char* pszFormat, ...)
if (fileout) if (fileout)
{ {
static bool fStartedNewLine = true; static bool fStartedNewLine = true;
static boost::mutex mutexDebugLog;
boost::mutex::scoped_lock scoped_lock(mutexDebugLog); // This routine may be called by global destructors during shutdown.
// Since the order of destruction of static/global objects is undefined,
// allocate mutexDebugLog on the heap the first time this routine
// is called to avoid crashes during shutdown.
static boost::mutex* mutexDebugLog = NULL;
if (mutexDebugLog == NULL) mutexDebugLog = new boost::mutex();
boost::mutex::scoped_lock scoped_lock(*mutexDebugLog);
// reopen the log file, if requested // reopen the log file, if requested
if (fReopenDebugLog) { if (fReopenDebugLog) {

Loading…
Cancel
Save