From 8e5781266a0ace09bad06e5e7b901ab57d70c9af Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 25 May 2024 17:15:32 +1000 Subject: [PATCH] CrashHandler: Fix call stack on manual dump --- src/common/crash_handler.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/common/crash_handler.cpp b/src/common/crash_handler.cpp index c3efd94f6..b8dd4540d 100644 --- a/src/common/crash_handler.cpp +++ b/src/common/crash_handler.cpp @@ -61,17 +61,26 @@ static bool WriteMinidump(HMODULE hDbgHelp, HANDLE hFile, HANDLE hProcess, DWORD if (!minidump_write_dump) return false; - MINIDUMP_EXCEPTION_INFORMATION mei; - PMINIDUMP_EXCEPTION_INFORMATION mei_ptr = nullptr; + MINIDUMP_EXCEPTION_INFORMATION mei = {}; if (exception) { mei.ThreadId = thread_id; mei.ExceptionPointers = exception; mei.ClientPointers = FALSE; - mei_ptr = &mei; + return minidump_write_dump(hProcess, process_id, hFile, type, &mei, nullptr, nullptr); } - return minidump_write_dump(hProcess, process_id, hFile, type, mei_ptr, nullptr, nullptr); + __try + { + RaiseException(EXCEPTION_INVALID_HANDLE, 0, 0, nullptr); + } + __except (WriteMinidump(hDbgHelp, hFile, GetCurrentProcess(), GetCurrentProcessId(), GetCurrentThreadId(), + GetExceptionInformation(), type), + EXCEPTION_EXECUTE_HANDLER) + { + } + + return true; } static std::wstring s_write_directory;