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(a)reactos.org> wrote:
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=40549483f60aa00e9fc95…
commit 40549483f60aa00e9fc952ba831027028f6df107
Author: Mark Jansen <mark.jansen(a)reactos.org>
AuthorDate: Thu Oct 18 22:07:37 2018 +0200
Commit: Mark Jansen <mark.jansen(a)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)