diff --git a/Engine/source/platformPOSIX/POSIXProcessControl.cpp b/Engine/source/platformPOSIX/POSIXProcessControl.cpp index dd2630f50..08e889aef 100644 --- a/Engine/source/platformPOSIX/POSIXProcessControl.cpp +++ b/Engine/source/platformPOSIX/POSIXProcessControl.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include "console/engineAPI.h" #include "core/util/journal/process.h" #ifndef TORQUE_DEDICATED @@ -59,21 +60,15 @@ static void CheckExitCode(S64 exitCode) //----------------------------------------------------------------------------- static void SignalHandler(int sigtype) { - if (sigtype == SIGSEGV || sigtype == SIGTRAP) - { - signal(SIGSEGV, SIG_DFL); - signal(SIGTRAP, SIG_DFL); - // restore the signal handling to default so that we don't get into - // a crash loop with ImmediateShutdown - ImmediateShutdown(-sigtype, sigtype); - } - else - { - signal(sigtype, SIG_DFL); - dPrintf("Unknown signal caught by SignalHandler: %d\n", sigtype); - // exit to be safe - ImmediateShutdown(1); - } + void* array[10]; + size_t size; + + size = backtrace(array, 10); + + dPrintf("Error: signal: % d\n", sigtype); + backtrace_symbols_fd(array, size, STDERR_FILENO); + // exit to be safe + ImmediateShutdown(1); } //-----------------------------------------------------------------------------