Crash handler may be not installed.

This commit is contained in:
Bartosz Taudul 2021-07-25 11:46:20 +02:00
parent 54fa21bcbb
commit 61c9e8e6d8
No known key found for this signature in database
GPG Key ID: B7FE2008B7575DF3
2 changed files with 14 additions and 7 deletions

View File

@ -1173,6 +1173,7 @@ Profiler::Profiler()
#endif
, m_paramCallback( nullptr )
, m_queryData( nullptr )
, m_crashHandlerInstalled( false )
{
assert( !s_instance );
s_instance = this;
@ -1249,6 +1250,8 @@ void Profiler::SpawnWorkerThreads()
sigaction( SIGABRT, &crashHandler, &m_prevSignal.abrt );
#endif
m_crashHandlerInstalled = true;
#ifdef TRACY_HAS_CALLSTACK
InitCallstack();
#endif
@ -1261,13 +1264,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 );
if( m_crashHandlerInstalled )
{
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

View File

@ -817,6 +817,7 @@ private:
struct sigaction pwr, ill, fpe, segv, pipe, bus, abrt;
} m_prevSignal;
#endif
bool m_crashHandlerInstalled;
};
}