Added a basic stacktracing for assert and signal failures.
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
#ifdef _MSC_VER
|
||||
#include <dbghelp.h>
|
||||
#endif // _MSC_VER
|
||||
#include "OSSupport/StackTrace.h"
|
||||
|
||||
|
||||
bool cRoot::m_TerminateEventRaised = false; // If something has told the server to stop; checked periodically in cRoot
|
||||
@@ -61,6 +62,7 @@ void NonCtrlHandler(int a_Signal)
|
||||
std::signal(SIGSEGV, SIG_DFL);
|
||||
LOGERROR(" D: | MCServer has encountered an error and needs to close");
|
||||
LOGERROR("Details | SIGSEGV: Segmentation fault");
|
||||
PrintStackTrace();
|
||||
abort();
|
||||
}
|
||||
case SIGABRT:
|
||||
@@ -71,6 +73,7 @@ void NonCtrlHandler(int a_Signal)
|
||||
std::signal(a_Signal, SIG_DFL);
|
||||
LOGERROR(" D: | MCServer has encountered an error and needs to close");
|
||||
LOGERROR("Details | SIGABRT: Server self-terminated due to an internal fault");
|
||||
PrintStackTrace();
|
||||
abort();
|
||||
}
|
||||
case SIGINT:
|
||||
@@ -137,6 +140,9 @@ LONG WINAPI LastChanceExceptionFilter(__in struct _EXCEPTION_POINTERS * a_Except
|
||||
g_WriteMiniDump(GetCurrentProcess(), GetCurrentProcessId(), dumpFile, g_DumpFlags, (a_ExceptionInfo) ? &ExcInformation : nullptr, nullptr, nullptr);
|
||||
CloseHandle(dumpFile);
|
||||
|
||||
// Print the stack trace for the basic debugging:
|
||||
PrintStackTrace();
|
||||
|
||||
// Revert to old stack:
|
||||
_asm
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user