Module: wine Branch: refs/heads/master Commit: 8b84808bed1335ffdc86f9dabca1cd55b1920326 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=8b84808bed1335ffdc86f9da...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Jan 10 17:44:39 2006 +0100
kernel: Don't send a debugger event in UnhandledExceptionFilter, leave that to the standard ntdll exception handling.
---
dlls/kernel/except.c | 51 +------------------------------------------------- 1 files changed, 1 insertions(+), 50 deletions(-)
diff --git a/dlls/kernel/except.c b/dlls/kernel/except.c index 1b33da5..1c97a2e 100644 --- a/dlls/kernel/except.c +++ b/dlls/kernel/except.c @@ -51,7 +51,6 @@ #include "wine/exception.h" #include "wine/library.h" #include "excpt.h" -#include "wine/server.h" #include "wine/unicode.h" #include "wine/debug.h"
@@ -175,38 +174,6 @@ static int format_exception_msg( const E }
-/********************************************************************** - * send_debug_event - * - * Send an EXCEPTION_DEBUG_EVENT event to the debugger. - */ -static NTSTATUS send_debug_event( EXCEPTION_RECORD *rec, int first_chance, CONTEXT *context ) -{ - NTSTATUS ret; - HANDLE handle = 0; - - SERVER_START_REQ( queue_exception_event ) - { - req->first = first_chance; - wine_server_add_data( req, context, sizeof(*context) ); - wine_server_add_data( req, rec, sizeof(*rec) ); - if (!(ret = wine_server_call( req ))) handle = reply->handle; - } - SERVER_END_REQ; - if (ret) return ret; - - WaitForSingleObject( handle, INFINITE ); - - SERVER_START_REQ( get_exception_status ) - { - req->handle = handle; - wine_server_set_reply( req, context, sizeof(*context) ); - ret = wine_server_call( req ); - } - SERVER_END_REQ; - return ret; -} - /****************************************************************** * start_debugger * @@ -452,8 +419,6 @@ inline static BOOL check_resource_write( */ DWORD WINAPI UnhandledExceptionFilter(PEXCEPTION_POINTERS epointers) { - NTSTATUS status; - if (check_resource_write( epointers->ExceptionRecord )) return EXCEPTION_CONTINUE_EXECUTION;
if (!NtCurrentTeb()->Peb->BeingDebugged) @@ -475,21 +440,7 @@ DWORD WINAPI UnhandledExceptionFilter(PE if (!start_debugger_atomic( epointers ) || !NtCurrentTeb()->Peb->BeingDebugged) return EXCEPTION_EXECUTE_HANDLER; } - - /* send a last chance event to the debugger */ - status = send_debug_event( epointers->ExceptionRecord, FALSE, epointers->ContextRecord ); - switch (status) - { - case DBG_CONTINUE: - return EXCEPTION_CONTINUE_EXECUTION; - case DBG_EXCEPTION_NOT_HANDLED: - TerminateProcess( GetCurrentProcess(), epointers->ExceptionRecord->ExceptionCode ); - break; /* not reached */ - default: - FIXME("Unhandled error on debug event: %lx\n", status); - break; - } - return EXCEPTION_EXECUTE_HANDLER; + return EXCEPTION_CONTINUE_SEARCH; }