Same here! This will break things. We should not be overriding the proper handling of the exception filters.

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=824e5dba51aca08204045e440be9c253a8469ac2

commit 824e5dba51aca08204045e440be9c253a8469ac2
Author:     Mark Jansen <mark.jansen@reactos.org>
AuthorDate: Sat Oct 20 15:38:21 2018 +0200
Commit:     Mark Jansen <mark.jansen@reactos.org>
CommitDate: Sun Oct 28 13:01:38 2018 +0100

    [KERNEL32] Directly use UnhandledExceptionFilter in BaseProcessStartup
---
 dll/win32/kernel32/client/proc.c | 29 +----------------------------
 1 file changed, 1 insertion(+), 28 deletions(-)

diff --git a/dll/win32/kernel32/client/proc.c b/dll/win32/kernel32/client/proc.c
index dbd5c10d0f..f36219457b 100644
--- a/dll/win32/kernel32/client/proc.c
+++ b/dll/win32/kernel32/client/proc.c
@@ -445,33 +445,6 @@ BasepSxsCloseHandles(IN PBASE_MSG_SXS_HANDLES Handles)
     }
 }

-static
-LONG BaseExceptionFilter(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)
-        {
-        }
-        _SEH2_END;
-    }
-    if ((ExceptionDisposition == EXCEPTION_CONTINUE_SEARCH || ExceptionDisposition == EXCEPTION_EXECUTE_HANDLER) &&
-        RealFilter != UnhandledExceptionFilter)
-    {
-       ExceptionDisposition = UnhandledExceptionFilter(ExceptionInfo);
-    }
-
-    return ExceptionDisposition;
-}
-
 VOID
 WINAPI
 BaseProcessStartup(PPROCESS_START_ROUTINE lpStartAddress)
@@ -489,7 +462,7 @@ BaseProcessStartup(PPROCESS_START_ROUTINE lpStartAddress)
         /* Call the Start Routine */
         ExitThread(lpStartAddress());
     }
-    _SEH2_EXCEPT(BaseExceptionFilter(_SEH2_GetExceptionInformation()))
+    _SEH2_EXCEPT(UnhandledExceptionFilter(_SEH2_GetExceptionInformation()))
     {
         /* Get the Exit code from the SEH Handler */
         if (!BaseRunningInServerProcess)