commit | 9e1ba9feca4dc3fa621f66d1d1b5a8154d4ccd96 | [log] [tgz] |
---|---|---|
author | Joshua Peraza <jperaza@chromium.org> | Wed Apr 08 09:56:20 2020 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Tue Jan 19 06:49:53 2021 -0800 |
tree | b2a5ced8212f85e2b651be80c46444dd573fd9a7 | |
parent | 964e9c2c0225700448ec331d7222ac5f1ab3a655 [diff] |
android: initialize signal dispositions Bionic installs signal handlers which request crash dumps from Android's debuggerd, but there are errors in how signals which aren't automatically re-raised are handled on Marshmallow (API 23). Before requesting a dump, Bionic acquires a lock to communicate with debuggerd and expecting imminent death, never releases it. While handling the dump request, debuggerd allows the dying process to continue before ptrace-detaching it. So, when Bionic manually re-raises a signal, it is intercepted by debuggerd and the dying process is allowed to live. Bionic restores SIG_DFL for the signal it's just handled, but if a different crash signal is later recieved, Bionic attempts to reacquire the lock to communicate with debuggerd and blocks forever. Disable Bionic's signal handlers for these signals on Marshmallow. Bug: chromium:1050178 Change-Id: If9181f62354a964eb3e1a394f442297eb5c8b297 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2134513 Reviewed-by: Mark Mentovai <mark@chromium.org> GitOrigin-RevId: c4cc4e6ac92d2c5c262d352f0435220db42334f8
Crashpad is a crash-reporting system.
Crashpad’s source code is hosted in a Git repository at https://chromium.googlesource.com/crashpad/crashpad.