1
0

Added a basic stacktracing for assert and signal failures.

This commit is contained in:
Mattes D
2014-11-29 23:06:10 +01:00
parent 883230abbc
commit 201313a9f8
5 changed files with 73 additions and 4 deletions

View File

@@ -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
{