From 2a78191cab295637f7f77e5b58951bcb64ae8cec Mon Sep 17 00:00:00 2001
From: stuartmorgan <stuartmorgan@4c0a9323-5329-0410-9bdc-e9ce6186880e>
Date: Thu, 28 May 2009 16:26:30 +0000
Subject: 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
---
 src/client/mac/Framework/Breakpad.mm         |  2 +-
 src/client/mac/crash_generation/Inspector.mm | 11 +++++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)

(limited to 'src')

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
-- 
cgit v1.2.1