diff --git a/src/blackmisc/stacktrace.cpp b/src/blackmisc/stacktrace.cpp index b989e1df0..1f6c80f9b 100644 --- a/src/blackmisc/stacktrace.cpp +++ b/src/blackmisc/stacktrace.cpp @@ -15,6 +15,8 @@ #include #include #include +#include +#include #if defined(Q_CC_MSVC) # include @@ -47,8 +49,15 @@ namespace BlackMisc static QMutex mutex; QMutexLocker lock(&mutex); + static std::once_flag flag; + std::call_once(flag, [] + { + SymInitialize(GetCurrentProcess(), nullptr, true); + std::atexit([] { SymCleanup(GetCurrentProcess()); }); + }); + auto process = GetCurrentProcess(); - SymInitialize(process, nullptr, true); + SymRefreshModuleList(process); std::array stack; auto frames = CaptureStackBackTrace(1, static_cast(stack.size()), stack.data(), nullptr);