diff options
author | ivan.penkov@gmail.com <ivan.penkov@gmail.com@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2012-08-15 22:09:42 +0000 |
---|---|---|
committer | ivan.penkov@gmail.com <ivan.penkov@gmail.com@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2012-08-15 22:09:42 +0000 |
commit | d7de392b05e015f669012db65395f26daaa53f14 (patch) | |
tree | cb4e3b3c63a4fb71c26b5611bd8db89e984968a3 /src/client/windows/crash_generation/client_info.h | |
parent | Fix narrowing conversion from -1 to size_t (diff) | |
download | breakpad-d7de392b05e015f669012db65395f26daaa53f14.tar.xz |
Fixing a race condition in the Crash Generation Server which has to
do with simultaneous handling of dump requests and client process
termination events.
http://breakpad.appspot.com/430002/
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1013 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/client/windows/crash_generation/client_info.h')
-rw-r--r-- | src/client/windows/crash_generation/client_info.h | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/client/windows/crash_generation/client_info.h b/src/client/windows/crash_generation/client_info.h index 999e6678..a24a82e7 100644 --- a/src/client/windows/crash_generation/client_info.h +++ b/src/client/windows/crash_generation/client_info.h @@ -67,24 +67,22 @@ class ClientInfo { HANDLE dump_generated_handle() const { return dump_generated_handle_; } DWORD crash_id() const { return crash_id_; } - HANDLE dump_request_wait_handle() const { - return dump_request_wait_handle_; - } - void set_dump_request_wait_handle(HANDLE value) { dump_request_wait_handle_ = value; } - HANDLE process_exit_wait_handle() const { - return process_exit_wait_handle_; - } - void set_process_exit_wait_handle(HANDLE value) { process_exit_wait_handle_ = value; } - // Unregister all waits for the client. - void UnregisterWaits(); + // Unregister the dump request wait operation and wait for all callbacks + // that might already be running to complete before returning. + void UnregisterDumpRequestWaitAndBlockUntilNoPending(); + + // Unregister the process exit wait operation. If block_until_no_pending is + // true, wait for all callbacks that might already be running to complete + // before returning. + void UnregisterProcessExitWait(bool block_until_no_pending); bool Initialize(); bool GetClientExceptionInfo(EXCEPTION_POINTERS** ex_info) const; |