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=40549483f60aa00e9fc952...
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 inBaseThreadStartup. 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)