Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/core/StarSignalHandler_windows.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2024-10-23 15:05:00 +1100
committerKae <80987908+Novaenia@users.noreply.github.com>2024-10-23 15:05:00 +1100
commit15d116b7eac53f1d0526aa80ab9d59b89661b128 (patch)
treeb0d6fa9f31fae8638525f9667bcad600292dfc9d /source/core/StarSignalHandler_windows.cpp
parent73e9ab3b8e310b1fed87297a1876048d22a122ec (diff)
fix broken minidumping
Diffstat (limited to 'source/core/StarSignalHandler_windows.cpp')
-rw-r--r--source/core/StarSignalHandler_windows.cpp15
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) {