Index: src/platform/crash/crash_reporter.cc |
diff --git a/src/platform/crash/crash_reporter.cc b/src/platform/crash/crash_reporter.cc |
index 3112fd384a6569d0988c2a20007ae49f5320315e..951d3fae3d4ecfc96104f949b1c9cf1d3a19545b 100644 |
--- a/src/platform/crash/crash_reporter.cc |
+++ b/src/platform/crash/crash_reporter.cc |
@@ -15,6 +15,7 @@ |
#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"); |
@@ -113,6 +114,13 @@ int main(int argc, char *argv[]) { |
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; |