mirror of
https://github.com/chromium/crashpad.git
synced 2024-12-27 15:32:10 +08:00
c4cc4e6ac9
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: Ia1fc5a24161a95931684d092ba8fee2f0dfbbdbb Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2134513 Reviewed-by: Mark Mentovai <mark@chromium.org>