Uhh, this change is not correct. It overrides the proper handling of exception filtering -- please revert.

Best regards,
Alex Ionescu


On Sun, Oct 28, 2018 at 9:03 AM Mark Jansen <mark.jansen@reactos.org> wrote:
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=40549483f60aa00e9fc952ba831027028f6df107

commit 40549483f60aa00e9fc952ba831027028f6df107
Author:     Mark Jansen <mark.jansen@reactos.org>
AuthorDate: Thu Oct 18 22:07:37 2018 +0200
Commit:     Mark Jansen <mark.jansen@reactos.org>
CommitDate: Sun Oct 28 13:01:38 2018 +0100

    [KERNEL32] Use the default UnhandledExceptionFilter in BaseThreadStartup.
    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 | 25 +------------------------
 1 file changed, 1 insertion(+), 24 deletions(-)

diff --git a/dll/win32/kernel32/client/thread.c b/dll/win32/kernel32/client/thread.c
index 8fc5a7ad61..2ff0102483 100644
--- a/dll/win32/kernel32/client/thread.c
+++ b/dll/win32/kernel32/client/thread.c
@@ -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)