aboutsummaryrefslogtreecommitdiff
path: root/src/client/windows/crash_generation/client_info.h
diff options
context:
space:
mode:
authorivan.penkov@gmail.com <ivan.penkov@gmail.com@4c0a9323-5329-0410-9bdc-e9ce6186880e>2012-08-15 22:09:42 +0000
committerivan.penkov@gmail.com <ivan.penkov@gmail.com@4c0a9323-5329-0410-9bdc-e9ce6186880e>2012-08-15 22:09:42 +0000
commitd7de392b05e015f669012db65395f26daaa53f14 (patch)
treecb4e3b3c63a4fb71c26b5611bd8db89e984968a3 /src/client/windows/crash_generation/client_info.h
parentFix narrowing conversion from -1 to size_t (diff)
downloadbreakpad-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.h18
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;