Jelajahi Sumber

Update POSIXProcessControl.cpp

marauder2k7 2 tahun lalu
induk
melakukan
a3cfc7f008
1 mengubah file dengan 10 tambahan dan 15 penghapusan
  1. 10 15
      Engine/source/platformPOSIX/POSIXProcessControl.cpp

+ 10 - 15
Engine/source/platformPOSIX/POSIXProcessControl.cpp

@@ -33,6 +33,7 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <signal.h>
+#include <execinfo.h>
 #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);
 }
 
 //-----------------------------------------------------------------------------