Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: components/crash/content/app/crashpad_win.cc

Issue 2475863004: Make Crashpad start asynchronous, and move back to chrome_elf (Closed)
Patch Set: comment Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/crash/content/app/crashpad.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/crash/content/app/crashpad_win.cc
diff --git a/components/crash/content/app/crashpad_win.cc b/components/crash/content/app/crashpad_win.cc
index bdbd94ee57507ef7fab4541a4615c4b6c3d0383a..1e9c06c9301a3de52bb87c4b66e668f74cee6c38 100644
--- a/components/crash/content/app/crashpad_win.cc
+++ b/components/crash/content/app/crashpad_win.cc
@@ -118,9 +118,15 @@ base::FilePath PlatformCrashpadInitialization(bool initial_client,
exe_file = exe_dir.Append(FILE_PATH_LITERAL("crashpad_handler.exe"));
}
- g_crashpad_client.Get().StartHandler(
- exe_file, database_path, metrics_path, url, process_annotations,
- arguments, false, false);
+ if (!g_crashpad_client.Get().StartHandler(
+ exe_file, database_path, metrics_path, url, process_annotations,
+ arguments, false, true)) {
+ // This means that CreateThread() failed, so this process is very messed
+ // up. This should be effectively unreachable. It is unlikely that there
+ // is any utility to ever making this non-fatal, however, if this is done,
+ // calls to BlockUntilHandlerStarted() will have to be amended.
+ LOG(FATAL) << "synchronous part of handler startup failed";
+ }
// If we're the browser, push the pipe name into the environment so child
// processes can connect to it. If we inherited another crashpad_handler's
@@ -208,6 +214,16 @@ MSVC_ENABLE_OPTIMIZE()
} // namespace
} // namespace internal
+
+void BlockUntilHandlerStarted() {
+ // We know that the StartHandler() at least started asynchronous startup if
+ // we're here, as if it doesn't, we abort.
+ const unsigned int kTimeoutMS = 5000;
+ if (!internal::g_crashpad_client.Get().WaitForHandlerStart(kTimeoutMS)) {
+ LOG(ERROR) << "Crashpad handler failed to start, crash reporting disabled";
+ }
+}
+
} // namespace crash_reporter
extern "C" {
« no previous file with comments | « components/crash/content/app/crashpad.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698