[KERNEL32] Use the default UnhandledExceptionFilter in BaseThreadStartup.
authorMark Jansen <mark.jansen@reactos.org>
Thu, 18 Oct 2018 20:07:37 +0000 (22:07 +0200)
committerMark Jansen <mark.jansen@reactos.org>
Sun, 28 Oct 2018 12:01:38 +0000 (13:01 +0100)
This should allow unhandled exceptions in a thread to trigger our crash reporter,
instead of killing the process directly.

dll/win32/kernel32/client/thread.c

index 8fc5a7a..2ff0102 100644 (file)
@@ -26,29 +26,6 @@ BasepNotifyCsrOfThread(IN HANDLE ThreadHandle,
 
 /* FUNCTIONS ******************************************************************/
 
-static
-LONG BaseThreadExceptionFilter(EXCEPTION_POINTERS * ExceptionInfo)
-{
-    LONG ExceptionDisposition = EXCEPTION_EXECUTE_HANDLER;
-    LPTOP_LEVEL_EXCEPTION_FILTER RealFilter;
-
-    RealFilter = RtlDecodePointer(GlobalTopLevelExceptionFilter);
-    if (RealFilter != NULL)
-    {
-        _SEH2_TRY
-        {
-            ExceptionDisposition = RealFilter(ExceptionInfo);
-        }
-        _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
-        {
-            ExceptionDisposition = UnhandledExceptionFilter(ExceptionInfo);
-        }
-        _SEH2_END;
-    }
-
-    return ExceptionDisposition;
-}
-
 __declspec(noreturn)
 VOID
 WINAPI
@@ -68,7 +45,7 @@ BaseThreadStartup(IN LPTHREAD_START_ROUTINE lpStartAddress,
         /* Get the exit code from the Thread Start */
         ExitThread((lpStartAddress)((PVOID)lpParameter));
     }
-    _SEH2_EXCEPT(BaseThreadExceptionFilter(_SEH2_GetExceptionInformation()))
+    _SEH2_EXCEPT(UnhandledExceptionFilter(_SEH2_GetExceptionInformation()))
     {
         /* Get the Exit code from the SEH Handler */
         if (!BaseRunningInServerProcess)