aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstuartmorgan <stuartmorgan@4c0a9323-5329-0410-9bdc-e9ce6186880e>2009-05-28 16:26:30 +0000
committerstuartmorgan <stuartmorgan@4c0a9323-5329-0410-9bdc-e9ce6186880e>2009-05-28 16:26:30 +0000
commit2a78191cab295637f7f77e5b58951bcb64ae8cec (patch)
tree8266318426f7c640ebe4f9bed714ece14e8cbbf9
parentFix up warnings when building http_upload.cc. Changed warning level to /W4, a... (diff)
downloadbreakpad-2a78191cab295637f7f77e5b58951bcb64ae8cec.tar.xz
Show the reporter UI for Breakpad.framework regardless of whether continuing the crashed process succeeded (issue 319)
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@341 4c0a9323-5329-0410-9bdc-e9ce6186880e
-rw-r--r--src/client/mac/Framework/Breakpad.mm2
-rw-r--r--src/client/mac/crash_generation/Inspector.mm11
2 files changed, 10 insertions, 3 deletions
diff --git a/src/client/mac/Framework/Breakpad.mm b/src/client/mac/Framework/Breakpad.mm
index ed3d385e..ad4a1cda 100644
--- a/src/client/mac/Framework/Breakpad.mm
+++ b/src/client/mac/Framework/Breakpad.mm
@@ -678,7 +678,7 @@ bool Breakpad::HandleException(int exception_type,
if (result == KERN_SUCCESS) {
// Wait for acknowledgement that the inspection has finished.
MachReceiveMessage acknowledge_messsage;
- result = acknowledge_port.WaitForMessage(&acknowledge_messsage, 2000);
+ result = acknowledge_port.WaitForMessage(&acknowledge_messsage, 5000);
}
}
diff --git a/src/client/mac/crash_generation/Inspector.mm b/src/client/mac/crash_generation/Inspector.mm
index 81db9741..649d4b15 100644
--- a/src/client/mac/crash_generation/Inspector.mm
+++ b/src/client/mac/crash_generation/Inspector.mm
@@ -208,14 +208,21 @@ void Inspector::Inspect(const char *receive_port_name) {
if (result == KERN_SUCCESS) {
// Inspect the task and write a minidump file.
- InspectTask();
+ bool wrote_minidump = InspectTask();
// Send acknowledgement to the crashed process that the inspection
// has finished. It will then be able to cleanly exit.
- if (SendAcknowledgement() == KERN_SUCCESS) {
+ // The return value is ignored because failure isn't fatal. If the process
+ // didn't get the message there's nothing we can do, and we still want to
+ // send the report.
+ SendAcknowledgement();
+
+ if (wrote_minidump) {
// Ask the user if he wants to upload the crash report to a server,
// and do so if he agrees.
LaunchReporter(config_file_.GetFilePath());
+ } else {
+ fprintf(stderr, "Inspection of crashed process failed\n");
}
// Now that we're done reading messages, cleanup the service, but only