diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-10-23 15:05:00 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-10-23 15:05:00 +1100 |
commit | 15d116b7eac53f1d0526aa80ab9d59b89661b128 (patch) | |
tree | b0d6fa9f31fae8638525f9667bcad600292dfc9d /source/core/StarSignalHandler_windows.cpp | |
parent | 73e9ab3b8e310b1fed87297a1876048d22a122ec (diff) |
fix broken minidumping
Diffstat (limited to 'source/core/StarSignalHandler_windows.cpp')
-rw-r--r-- | source/core/StarSignalHandler_windows.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/source/core/StarSignalHandler_windows.cpp b/source/core/StarSignalHandler_windows.cpp index 13a36ac..2b27467 100644 --- a/source/core/StarSignalHandler_windows.cpp +++ b/source/core/StarSignalHandler_windows.cpp @@ -123,14 +123,15 @@ struct SignalHandlerImpl { static LONG CALLBACK vectoredExceptionHandler(PEXCEPTION_POINTERS ExceptionInfo) { auto thread = CreateThread(NULL, 0, writeMiniDump, (void*)ExceptionInfo, 0, NULL); + LONG result = EXCEPTION_CONTINUE_SEARCH; if (ExceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_ACCESS_VIOLATION) { handleFatalError("Access violation detected", ExceptionInfo); - return EXCEPTION_CONTINUE_EXECUTION; + result = EXCEPTION_CONTINUE_EXECUTION; } if ((ExceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_ILLEGAL_INSTRUCTION) || (ExceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_PRIV_INSTRUCTION)) { handleFatalError("Illegal instruction encountered", ExceptionInfo); - return EXCEPTION_CONTINUE_EXECUTION; + result = EXCEPTION_CONTINUE_EXECUTION; } if ((ExceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_FLT_DENORMAL_OPERAND) @@ -143,17 +144,17 @@ struct SignalHandlerImpl { ) { handleFatalError("Floating point exception", ExceptionInfo); - return EXCEPTION_CONTINUE_EXECUTION; + result = EXCEPTION_CONTINUE_EXECUTION; } if (ExceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_INT_DIVIDE_BY_ZERO) { handleFatalError("Division by zero", ExceptionInfo); - return EXCEPTION_CONTINUE_EXECUTION; + result = EXCEPTION_CONTINUE_EXECUTION; } if (ExceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_INT_OVERFLOW) { handleFatalError("Integer overflow", ExceptionInfo); - return EXCEPTION_CONTINUE_EXECUTION; + result = EXCEPTION_CONTINUE_EXECUTION; } if ((ExceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_DATATYPE_MISALIGNMENT) @@ -163,13 +164,13 @@ struct SignalHandlerImpl { || (ExceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_INVALID_DISPOSITION) || (ExceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_INVALID_HANDLE)) { handleFatalError("Error occured", ExceptionInfo); - return EXCEPTION_CONTINUE_EXECUTION; + result = EXCEPTION_CONTINUE_EXECUTION; } if (thread != NULL) { WaitForSingleObject(thread, 10000); CloseHandle(thread); } - return EXCEPTION_CONTINUE_SEARCH; + return result; } static BOOL WINAPI consoleCtrlHandler(DWORD) { |