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

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

Issue 2638433002: Integrate fallback crash handling in chrome (Closed)
Patch Set: Reorganize the fallback integration code into a pair of separate files. Created 3 years, 11 months 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
Index: components/crash/content/app/fallback_crash_handling_win.cc
diff --git a/components/crash/content/app/fallback_crash_handling_win.cc b/components/crash/content/app/fallback_crash_handling_win.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5a1d37b5d7843c61cbc50b5f522b4009971cb31f
--- /dev/null
+++ b/components/crash/content/app/fallback_crash_handling_win.cc
@@ -0,0 +1,79 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/crash/content/app/fallback_crash_handling_win.h"
+
+#include <memory>
+#include <string>
scottmg 2017/01/13 22:20:00 Can remove this, it's already in the header
Sigurður Ásgeirsson 2017/01/16 18:23:24 Done.
+
+#include "base/command_line.h"
+#include "components/crash/content/app/crash_switches.h"
+#include "components/crash/content/app/fallback_crash_handler_launcher_win.h"
+#include "components/crash/content/app/fallback_crash_handler_win.h"
+
+namespace crash_reporter {
+
+namespace switches {
+const char kFallbackCrashHandler[] = "fallback-handler";
+}
+
+namespace {
+
+std::unique_ptr<FallbackCrashHandlerLauncher> g_fallback_crash_handler_launcher;
+
+LONG WINAPI FallbackUnhandledExceptionFilter(EXCEPTION_POINTERS* exc_ptrs) {
scottmg 2017/01/13 22:20:00 This doesn't seem to be used? And apropros of tha
Sigurður Ásgeirsson 2017/01/13 22:40:28 I sure hope so. Monday, first thing. I wanna ship
+ if (!g_fallback_crash_handler_launcher)
+ return EXCEPTION_CONTINUE_SEARCH;
+
+ return g_fallback_crash_handler_launcher->LaunchAndWaitForHandler(exc_ptrs);
+}
+
+} // namespace
+
+void SetupFallbackCrashHandling(const base::CommandLine& command_line) {
+ // Run the same program.
+ base::CommandLine base_command_line(command_line.GetProgram());
+ base_command_line.AppendSwitchASCII("type", switches::kFallbackCrashHandler);
+
+ // Get the database path.
+ base::FilePath database_path = command_line.GetSwitchValuePath("database");
+ if (database_path.empty()) {
+ NOTREACHED();
+ return;
+ }
+
+ std::unique_ptr<FallbackCrashHandlerLauncher> fallback_launcher(
+ new FallbackCrashHandlerLauncher());
+
+ if (!fallback_launcher->Initialize(base_command_line, database_path)) {
+ NOTREACHED();
+ return;
+ }
+
+ // Success, pass ownership to the global.
+ g_fallback_crash_handler_launcher = std::move(fallback_launcher);
+}
+
+int RunAsFallbackCrashHandler(const base::CommandLine& command_line,
+ std::string product_name,
+ std::string version,
+ std::string channel_name) {
+ FallbackCrashHandler fallback_handler;
+
+ if (!fallback_handler.ParseCommandLine(command_line)) {
+ // TODO(siggi): Figure out how to UMA from this process, if need be.
+ return 1;
+ }
+
+ if (!fallback_handler.GenerateCrashDump(
+ product_name, version, channel_name,
+ crash_reporter::switches::kCrashpadHandler)) {
+ // TODO(siggi): Figure out how to UMA from this process, if need be.
+ return 2;
+ }
+
+ return 0;
+}
+
+} // namespace crash_reporter

Powered by Google App Engine
This is Rietveld 408576698