From 924224501eabd23c136b102c503ae2a4ac6f7b7d Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Sun, 25 Jul 2021 11:48:27 +0200 Subject: [PATCH] Remove exception handler during profiler destruction. --- client/TracyProfiler.cpp | 6 +++++- client/TracyProfiler.hpp | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/client/TracyProfiler.cpp b/client/TracyProfiler.cpp index ecc90d88..17062305 100644 --- a/client/TracyProfiler.cpp +++ b/client/TracyProfiler.cpp @@ -1231,7 +1231,7 @@ void Profiler::SpawnWorkerThreads() #if defined _WIN32 || defined __CYGWIN__ s_profilerThreadId = GetThreadId( s_thread->Handle() ); - AddVectoredExceptionHandler( 1, CrashFilter ); + m_exceptionHandler = AddVectoredExceptionHandler( 1, CrashFilter ); #endif #ifdef __linux__ @@ -1263,6 +1263,10 @@ Profiler::~Profiler() { m_shutdown.store( true, std::memory_order_relaxed ); +#if defined _WIN32 || defined __CYGWIN__ + if( m_crashHandlerInstalled ) RemoveVectoredExceptionHandler( m_exceptionHandler ); +#endif + #ifdef __linux__ if( m_crashHandlerInstalled ) { diff --git a/client/TracyProfiler.hpp b/client/TracyProfiler.hpp index 8a0f827d..f120f1d3 100644 --- a/client/TracyProfiler.hpp +++ b/client/TracyProfiler.hpp @@ -812,6 +812,9 @@ private: char* m_queryData; char* m_queryDataPtr; +#if defined _WIN32 || defined __CYGWIN__ + void* m_exceptionHandler; +#endif #ifdef __linux__ struct { struct sigaction pwr, ill, fpe, segv, pipe, bus, abrt;