From 9c811fbd6a27ba9377ed5e3460c6e5794800dd0a Mon Sep 17 00:00:00 2001 From: michaelbai Date: Tue, 21 Jul 2015 09:59:06 -0700 Subject: [PATCH] Revert of Fix ProcessUtilTest.GetTerminationStatusCrash on Android L+ (patchset #2 id:20001 of https://codereview.chromium.org/1241333002/) Reason for revert: This patch broke the mips builder for Android ../../third_party/lss/linux_syscall_support.h:121:21: fatal error: sgidefs.h: No such file or directory #include Original issue's description: > Fix ProcessUtilTest.GetTerminationStatusCrash on Android L+ > > On Android L+, signal and sigaction symbols are provided by libsigchain > that override the system's versions. There is a bug in these functions > where they essentially ignore requests to install SIG_DFL. This causes > ProcessUtilTest.GetTerminationStatusCrash to fail (as > CrashingChildProcess goes into infinite loop instead of crashing). > > Workaround this issue by explicitly performing a syscall to > __NR_rt_sigaction to install SIG_DFL on Android, as breakpad does > (see https://breakpad.appspot.com/1804002/). > > BUG=512255 > TEST=ProcessUtilTest.GetTerminationStatusCrash > > Committed: https://crrev.com/31510fe3e2d3b1f3123f391db52372b2506c46ca > Cr-Commit-Position: refs/heads/master@{#339584} TBR=thakis@chromium.org,primiano@chromium.org,cullinan@amazon.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=512255 Review URL: https://codereview.chromium.org/1247023002 Cr-Commit-Position: refs/heads/master@{#339668} --- base/DEPS | 1 - base/process/process_util_unittest.cc | 17 +---------------- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/base/DEPS b/base/DEPS index 6d91c8d947f1..c632e35d83a5 100644 --- a/base/DEPS +++ b/base/DEPS @@ -4,7 +4,6 @@ include_rules = [ "+third_party/apple_apsl", "+third_party/libevent", "+third_party/dmg_fp", - "+third_party/lss", "+third_party/mach_override", "+third_party/modp_b64", "+third_party/tcmalloc", diff --git a/base/process/process_util_unittest.cc b/base/process/process_util_unittest.cc index 0ca4e3ae7d76..6c1a3f1d7619 100644 --- a/base/process/process_util_unittest.cc +++ b/base/process/process_util_unittest.cc @@ -59,9 +59,6 @@ #include #include "base/mac/mac_util.h" #endif -#if defined(OS_ANDROID) -#include "third_party/lss/linux_syscall_support.h" -#endif using base::FilePath; @@ -229,19 +226,7 @@ const char kSignalFileCrash[] = "CrashingChildProcess.die"; MULTIPROCESS_TEST_MAIN(CrashingChildProcess) { WaitToDie(ProcessUtilTest::GetSignalFilePath(kSignalFileCrash).c_str()); -#if defined(OS_ANDROID) - // Android L+ expose signal and sigaction symbols that override the system - // ones. There is a bug in these functions where a request to set the handler - // to SIG_DFL is ignored. In that case, an infinite loop is entered as the - // signal is repeatedly sent to the crash dump signal handler. - // To work around this, directly call the system's sigaction. - struct kernel_sigaction sa; - memset(&sa, 0, sizeof(sa)); - sys_sigemptyset(&sa.sa_mask); - sa.sa_handler_ = SIG_DFL; - sa.sa_flags = SA_RESTART; - sys_rt_sigaction(SIGSEGV, &sa, NULL, sizeof(kernel_sigset_t)); -#elif defined(OS_POSIX) +#if defined(OS_POSIX) // Have to disable to signal handler for segv so we can get a crash // instead of an abnormal termination through the crash dump handler. ::signal(SIGSEGV, SIG_DFL);