diff --git a/Utilities/Thread.cpp b/Utilities/Thread.cpp index 9c79539f33..e4744bf655 100644 --- a/Utilities/Thread.cpp +++ b/Utilities/Thread.cpp @@ -1531,6 +1531,11 @@ static LONG exception_handler(PEXCEPTION_POINTERS pExp) noexcept } } + return EXCEPTION_CONTINUE_SEARCH; +} + +static LONG exception_filter(PEXCEPTION_POINTERS pExp) noexcept +{ std::string msg = fmt::format("Unhandled Win32 exception 0x%08X.\n", pExp->ExceptionRecord->ExceptionCode); if (pExp->ExceptionRecord->ExceptionCode == EXCEPTION_ACCESS_VIOLATION) @@ -1638,6 +1643,11 @@ const bool s_exception_handler_set = []() -> bool report_fatal_error("AddVectoredExceptionHandler() failed."); } + if (!SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)exception_filter)) + { + report_fatal_error("SetUnhandledExceptionFilter() failed."); + } + return true; }();