summaryrefslogtreecommitdiffstats
path: root/debuggerd
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2018-05-19 02:14:33 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-05-19 02:14:33 +0000
commit74bf81443fef2ff48bb80cc24b678aff8bdd462a (patch)
tree488597ca33e147341685eb1165077c7c2c2cbced /debuggerd
parent98214c81d157d4cef7f5ca6cbd6f447e596beb80 (diff)
parentd2b15dd6749eefaa76a12e0466693e4336e9b8a7 (diff)
downloadsystem_core-74bf81443fef2ff48bb80cc24b678aff8bdd462a.tar.gz
system_core-74bf81443fef2ff48bb80cc24b678aff8bdd462a.tar.bz2
system_core-74bf81443fef2ff48bb80cc24b678aff8bdd462a.zip
Merge "debuggerd: fix CrasherTest.seccomp_crash_oom."
Diffstat (limited to 'debuggerd')
-rw-r--r--debuggerd/handler/debuggerd_fallback.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/debuggerd/handler/debuggerd_fallback.cpp b/debuggerd/handler/debuggerd_fallback.cpp
index dea2e17eb..079a574d3 100644
--- a/debuggerd/handler/debuggerd_fallback.cpp
+++ b/debuggerd/handler/debuggerd_fallback.cpp
@@ -304,7 +304,16 @@ static void crash_handler(siginfo_t* info, ucontext_t* ucontext, void* abort_mes
crash_mutex.lock();
if (lock_count++ > 0) {
- async_safe_format_log(ANDROID_LOG_ERROR, "libc", "recursed signal handler call, exiting");
+ async_safe_format_log(ANDROID_LOG_ERROR, "libc", "recursed signal handler call, aborting");
+ signal(SIGABRT, SIG_DFL);
+ raise(SIGABRT);
+ sigset_t sigset;
+ sigemptyset(&sigset);
+ sigaddset(&sigset, SIGABRT);
+ sigprocmask(SIG_UNBLOCK, &sigset, nullptr);
+
+ // Just in case...
+ async_safe_format_log(ANDROID_LOG_ERROR, "libc", "abort didn't exit, exiting");
_exit(1);
}