mirror of
				https://github.com/yuzu-emu/breakpad.git
				synced 2025-11-04 16:15:02 +00:00 
			
		
		
		
	Pass the exception record (EXCEPTION_POINTERS*) to callback functions from
ExceptionHandler on Windows. Patch by John Abd-El-Malek. r=me Interface change: post-dump and pre-dump (filter) callbacks now must accept an additional EXCEPTION_POINTERS* argument. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@103 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
		
							parent
							
								
									fd98b2af37
								
							
						
					
					
						commit
						f614cb9845
					
				| 
						 | 
				
			
			@ -287,7 +287,7 @@ bool ExceptionHandler::WriteMinidumpWithException(DWORD requesting_thread_id,
 | 
			
		|||
  // HandleException to call any previous handler or return
 | 
			
		||||
  // EXCEPTION_CONTINUE_SEARCH on the exception thread, allowing it to appear
 | 
			
		||||
  // as though this handler were not present at all.
 | 
			
		||||
  if (filter_&& !filter_(callback_context_)) {
 | 
			
		||||
  if (filter_&& !filter_(callback_context_, exinfo)) {
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -342,7 +342,7 @@ bool ExceptionHandler::WriteMinidumpWithException(DWORD requesting_thread_id,
 | 
			
		|||
 | 
			
		||||
  if (callback_) {
 | 
			
		||||
    success = callback_(dump_path_c_, next_minidump_id_c_, callback_context_,
 | 
			
		||||
                        success);
 | 
			
		||||
                        exinfo, success);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return success;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -79,19 +79,21 @@ class ExceptionHandler {
 | 
			
		|||
  // A callback function to run before Airbag performs any substantial
 | 
			
		||||
  // processing of an exception.  A FilterCallback is called before writing
 | 
			
		||||
  // a minidump.  context is the parameter supplied by the user as
 | 
			
		||||
  // callback_context when the handler was created.
 | 
			
		||||
  // callback_context when the handler was created.  exinfo points to the
 | 
			
		||||
  // exception record.
 | 
			
		||||
  //
 | 
			
		||||
  // If a FilterCallback returns true, Airbag will continue processing,
 | 
			
		||||
  // attempting to write a minidump.  If a FilterCallback returns false, Airbag
 | 
			
		||||
  // will immediately report the exception as unhandled without writing a
 | 
			
		||||
  // minidump, allowing another handler the opportunity to handle it.
 | 
			
		||||
  typedef bool (*FilterCallback)(void *context);
 | 
			
		||||
  typedef bool (*FilterCallback)(void *context, EXCEPTION_POINTERS *exinfo);
 | 
			
		||||
 | 
			
		||||
  // A callback function to run after the minidump has been written.
 | 
			
		||||
  // minidump_id is a unique id for the dump, so the minidump
 | 
			
		||||
  // file is <dump_path>\<minidump_id>.dmp.  context is the parameter supplied
 | 
			
		||||
  // by the user as callback_context when the handler was created.  succeeded
 | 
			
		||||
  // indicates whether a minidump file was successfully written.
 | 
			
		||||
  // by the user as callback_context when the handler was created.  exinfo
 | 
			
		||||
  // points to the exception record, or NULL if no exception occurred.
 | 
			
		||||
  // succeeded indicates whether a minidump file was successfully written.
 | 
			
		||||
  //
 | 
			
		||||
  // If an exception occurred and the callback returns true, Airbag will treat
 | 
			
		||||
  // the exception as fully-handled, suppressing any other handlers from being
 | 
			
		||||
| 
						 | 
				
			
			@ -106,6 +108,7 @@ class ExceptionHandler {
 | 
			
		|||
  typedef bool (*MinidumpCallback)(const wchar_t *dump_path,
 | 
			
		||||
                                   const wchar_t *minidump_id,
 | 
			
		||||
                                   void *context,
 | 
			
		||||
                                   EXCEPTION_POINTERS *exinfo,
 | 
			
		||||
                                   bool succeeded);
 | 
			
		||||
 | 
			
		||||
  // Creates a new ExceptionHandler instance to handle writing minidumps.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										3
									
								
								src/processor/testdata/test_app.cc
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								src/processor/testdata/test_app.cc
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -40,7 +40,8 @@
 | 
			
		|||
namespace {
 | 
			
		||||
 | 
			
		||||
static bool callback(const wchar_t *dump_path, const wchar_t *id,
 | 
			
		||||
                     void *context, bool succeeded) {
 | 
			
		||||
                     void *context, EXCEPTION_POINTERS *exinfo,
 | 
			
		||||
                     bool succeeded) {
 | 
			
		||||
  if (succeeded) {
 | 
			
		||||
    printf("dump guid is %ws\n", id);
 | 
			
		||||
  } else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue