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

Unified Diff: crash_reporter.cc

Issue 2868032: Remove source from crash-reporter and crash-dumper as they are no longer necessary. (Closed) Base URL: ssh://git@chromiumos-git//crash.git
Patch Set: Created 10 years, 6 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
« no previous file with comments | « crash_dumper.cc ('k') | crash_sender » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: crash_reporter.cc
diff --git a/crash_reporter.cc b/crash_reporter.cc
deleted file mode 100644
index e283322dab15b1c2c1640866755bd6bf5f7fe182..0000000000000000000000000000000000000000
--- a/crash_reporter.cc
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright (c) 2010 The Chromium OS 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 <string>
-
-#include "base/file_util.h"
-#include "base/logging.h"
-#include "base/string_util.h"
-#include "crash/system_logging.h"
-#include "crash/user_collector.h"
-#include "gflags/gflags.h"
-#include "metrics/metrics_library.h"
-
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
-DEFINE_bool(init, false, "Initialize crash logging");
-DEFINE_bool(clean_shutdown, false, "Signal clean shutdown");
-DEFINE_bool(crash_test, false, "Crash test");
-DEFINE_string(exec, "", "Executable name crashed");
-DEFINE_int32(pid, -1, "Crashing PID");
-DEFINE_int32(signal, -1, "Signal causing crash");
-DEFINE_bool(unclean_check, true, "Check for unclean shutdown");
-#pragma GCC diagnostic error "-Wstrict-aliasing"
-
-static const char kCrashCounterHistogram[] = "Logging.CrashCounter";
-static const char kUncleanShutdownFile[] =
- "/var/lib/crash_reporter/pending_clean_shutdown";
-
-// Enumeration of kinds of crashes to be used in the CrashCounter histogram.
-enum CrashKinds {
- CRASH_KIND_KERNEL = 1,
- CRASH_KIND_USER = 2,
- CRASH_KIND_MAX
-};
-
-static MetricsLibrary s_metrics_lib;
-static SystemLoggingImpl s_system_log;
-
-static bool IsMetricsCollectionAllowed() {
- // TODO(kmixter): Eventually check system tainted state and
- // move this down in metrics library where it would be explicitly
- // checked when asked to send stats.
- return true;
-}
-
-static void CheckUncleanShutdown() {
- FilePath unclean_file_path(kUncleanShutdownFile);
- if (!file_util::PathExists(unclean_file_path)) {
- return;
- }
- s_system_log.LogWarning("Last shutdown was not clean");
- if (IsMetricsCollectionAllowed()) {
- s_metrics_lib.SendEnumToUMA(std::string(kCrashCounterHistogram),
- CRASH_KIND_KERNEL,
- CRASH_KIND_MAX);
- }
- if (!file_util::Delete(unclean_file_path, false)) {
- s_system_log.LogError("Failed to delete unclean shutdown file %s",
- kUncleanShutdownFile);
- }
-}
-
-static bool PrepareUncleanShutdownCheck() {
- static const char empty[] = "";
- FilePath file_path(kUncleanShutdownFile);
- file_util::CreateDirectory(file_path.DirName());
- return file_util::WriteFile(file_path, empty, 0) == 0;
-}
-
-static void SignalCleanShutdown() {
- s_system_log.LogInfo("Clean shutdown signalled");
- file_util::Delete(FilePath(kUncleanShutdownFile), false);
-}
-
-static void CountUserCrash() {
- CHECK(IsMetricsCollectionAllowed());
- s_metrics_lib.SendEnumToUMA(std::string(kCrashCounterHistogram),
- CRASH_KIND_USER,
- CRASH_KIND_MAX);
-
- // Announce through D-Bus whenever a user crash happens. This is
- // used by the metrics daemon to log active use time between
- // crashes.
- //
- // This could be done more efficiently by explicit fork/exec or
- // using a dbus library directly. However, this should run
- // relatively rarely and longer term we may need to implement a
- // better way to do this that doesn't rely on D-Bus.
- int status __attribute__((unused)) =
- system("/usr/bin/dbus-send --type=signal --system / "
- "org.chromium.CrashReporter.UserCrash");
-}
-
-int main(int argc, char *argv[]) {
- google::ParseCommandLineFlags(&argc, &argv, true);
- FilePath my_path(argv[0]);
- file_util::AbsolutePath(&my_path);
- s_metrics_lib.Init();
- s_system_log.Initialize(my_path.BaseName().value().c_str());
- UserCollector user_collector;
- user_collector.Initialize(CountUserCrash,
- my_path.value(),
- IsMetricsCollectionAllowed,
- &s_system_log);
-
- if (FLAGS_init) {
- CHECK(!FLAGS_clean_shutdown) << "Incompatible options";
- user_collector.Enable();
- if (FLAGS_unclean_check) {
- CheckUncleanShutdown();
- if (!PrepareUncleanShutdownCheck()) {
- s_system_log.LogError("Unable to create shutdown check file");
- }
- }
- return 0;
- }
-
- if (FLAGS_clean_shutdown) {
- SignalCleanShutdown();
- user_collector.Disable();
- return 0;
- }
-
- // Handle a specific user space crash.
- CHECK(FLAGS_signal != -1) << "Signal must be set";
- CHECK(FLAGS_pid != -1) << "PID must be set";
- CHECK(FLAGS_exec != "") << "Executable name must be set";
-
- // Make it possible to test what happens when we crash while
- // handling a crash.
- if (FLAGS_crash_test) {
- *(char *)0 = 0;
- return 0;
- }
-
- user_collector.HandleCrash(FLAGS_signal, FLAGS_pid, FLAGS_exec);
-
- return 0;
-}
« no previous file with comments | « crash_dumper.cc ('k') | crash_sender » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698