debuggerd_handler: don't use clone(..., SIGCHLD, ...)
Processes that handle SIGCHLD can race with the crash handler to wait on the crash_dump process. Use clone flags that cause the forked child's death to not be reported via SIGCHLD, and don't bail out of dumping when waitpid returns ECHILD (in case another thread is already in a waitpid(..., __WALL)) Note that the use of waitid was switched to waitpid, because waitid doesn't support __WCLONE until kernel version 4.7. Bug: none Test: "debuggerd -b `pidof zygote64`" a few times (failed roughly 50% of the time previously) Change-Id: Ia41a26a61f13c6f9aa85c4c2f88aef8d279d35ad
Loading
Please register or sign in to comment