1
0
mirror of https://github.com/wolfpld/tracy synced 2025-04-29 04:23:51 +00:00

Restore original signal handlers on profiler exit.

This commit is contained in:
Bartosz Taudul 2021-07-25 11:40:22 +02:00
parent 5936e7c86c
commit 54fa21bcbb
No known key found for this signature in database
GPG Key ID: B7FE2008B7575DF3
2 changed files with 23 additions and 7 deletions

View File

@ -1236,17 +1236,17 @@ void Profiler::SpawnWorkerThreads()
#ifdef __linux__
struct sigaction threadFreezer = {};
threadFreezer.sa_handler = ThreadFreezer;
sigaction( SIGPWR, &threadFreezer, nullptr );
sigaction( SIGPWR, &threadFreezer, &m_prevSignal.pwr );
struct sigaction crashHandler = {};
crashHandler.sa_sigaction = CrashHandler;
crashHandler.sa_flags = SA_SIGINFO;
sigaction( SIGILL, &crashHandler, nullptr );
sigaction( SIGFPE, &crashHandler, nullptr );
sigaction( SIGSEGV, &crashHandler, nullptr );
sigaction( SIGPIPE, &crashHandler, nullptr );
sigaction( SIGBUS, &crashHandler, nullptr );
sigaction( SIGABRT, &crashHandler, nullptr );
sigaction( SIGILL, &crashHandler, &m_prevSignal.ill );
sigaction( SIGFPE, &crashHandler, &m_prevSignal.fpe );
sigaction( SIGSEGV, &crashHandler, &m_prevSignal.segv );
sigaction( SIGPIPE, &crashHandler, &m_prevSignal.pipe );
sigaction( SIGBUS, &crashHandler, &m_prevSignal.bus );
sigaction( SIGABRT, &crashHandler, &m_prevSignal.abrt );
#endif
#ifdef TRACY_HAS_CALLSTACK
@ -1260,6 +1260,16 @@ Profiler::~Profiler()
{
m_shutdown.store( true, std::memory_order_relaxed );
#ifdef __linux__
sigaction( SIGPWR, &m_prevSignal.pwr, nullptr );
sigaction( SIGILL, &m_prevSignal.ill, nullptr );
sigaction( SIGFPE, &m_prevSignal.fpe, nullptr );
sigaction( SIGSEGV, &m_prevSignal.segv, nullptr );
sigaction( SIGPIPE, &m_prevSignal.pipe, nullptr );
sigaction( SIGBUS, &m_prevSignal.bus, nullptr );
sigaction( SIGABRT, &m_prevSignal.abrt, nullptr );
#endif
#ifdef TRACY_HAS_SYSTEM_TRACING
if( s_sysTraceThread )
{

View File

@ -811,6 +811,12 @@ private:
char* m_queryData;
char* m_queryDataPtr;
#ifdef __linux__
struct {
struct sigaction pwr, ill, fpe, segv, pipe, bus, abrt;
} m_prevSignal;
#endif
};
}