| Index: content/public/test/browser_test_base.cc
|
| diff --git a/content/public/test/browser_test_base.cc b/content/public/test/browser_test_base.cc
|
| index c6d2e4b6a03c91f8fc0a4adc8ae160b69d20c030..0b510beb8b483eefcdec4d63d0ceac8e1fa3d53e 100644
|
| --- a/content/public/test/browser_test_base.cc
|
| +++ b/content/public/test/browser_test_base.cc
|
| @@ -62,18 +62,19 @@ namespace content {
|
| namespace {
|
|
|
| #if defined(OS_POSIX)
|
| -// On SIGTERM (sent by the runner on timeouts), dump a stack trace (to make
|
| -// debugging easier) and also exit with a known error code (so that the test
|
| -// framework considers this a failure -- http://crbug.com/57578).
|
| +// On SIGSEGV or SIGTERM (sent by the runner on timeouts), dump a stack trace
|
| +// (to make debugging easier) and also exit with a known error code (so that
|
| +// the test framework considers this a failure -- http://crbug.com/57578).
|
| // Note: We only want to do this in the browser process, and not forked
|
| // processes. That might lead to hangs because of locks inside tcmalloc or the
|
| // OS. See http://crbug.com/141302.
|
| static int g_browser_process_pid;
|
| static void DumpStackTraceSignalHandler(int signal) {
|
| if (g_browser_process_pid == base::GetCurrentProcId()) {
|
| - logging::RawLog(logging::LOG_ERROR,
|
| - "BrowserTestBase signal handler received SIGTERM. "
|
| - "Backtrace:\n");
|
| + std::string message("BrowserTestBase received signal: ");
|
| + message += strsignal(signal);
|
| + message += ". Backtrace:\n";
|
| + logging::RawLog(logging::LOG_ERROR, message.c_str());
|
| base::debug::StackTrace().Print();
|
| }
|
| _exit(128 + signal);
|
| @@ -314,10 +315,11 @@ void BrowserTestBase::TearDown() {
|
|
|
| void BrowserTestBase::ProxyRunTestOnMainThreadLoop() {
|
| #if defined(OS_POSIX)
|
| - if (handle_sigterm_) {
|
| - g_browser_process_pid = base::GetCurrentProcId();
|
| + g_browser_process_pid = base::GetCurrentProcId();
|
| + signal(SIGSEGV, DumpStackTraceSignalHandler);
|
| +
|
| + if (handle_sigterm_)
|
| signal(SIGTERM, DumpStackTraceSignalHandler);
|
| - }
|
| #endif // defined(OS_POSIX)
|
|
|
| if (base::CommandLine::ForCurrentProcess()->HasSwitch(
|
|
|