OSDN Git Service

Zygote : Block SIGCHLD during fork.
authorNarayan Kamath <narayan@google.com>
Mon, 7 Nov 2016 16:22:48 +0000 (16:22 +0000)
committerAdam Seaton <aseaton@google.com>
Wed, 30 Nov 2016 23:40:59 +0000 (15:40 -0800)
commitcc3a845d08fc99b1af1a1707492495a34cb2a1cb
tree494506104f28d973a6e97f0dc6695c5d95157c8d
parent81a958fc287bc8b1c0601960f466828f4abb0c2c
Zygote : Block SIGCHLD during fork.

Fix merge conflict into mnc-mr2-release
We close the android logging related sockets prior as late as possible
before every fork to avoid having to whitelist them. If one of the
zygote's children dies after this point (but prior to the fork), we can
end up reopening the logging sockets from the SIGCHLD signal handler.

To prevent this from happening, block SIGCHLD during this critical
section.

Bug: 32693692
Test: Manual

(cherry picked from commit e9a525829a354c92983a35455ccab16d1b0d3892)

Zygote: Unblock SIGCHLD in the parent after fork.

Follow up to change e9a525829a354c92983a. Allows the zygote to
receive SIGCHLD again and prevents the zygote from getting into a
zombie state if it's killed.

Contributed-By: rhed_jao <rhed_jao@htc.com>
Bug: 32693692
Test: manual

(cherry picked from commit 1480dc3e97b661f5bfa3a5c2fbce72385b8d2be6)

Change-Id: If89903a29c84dfc9b056f9e19618046874bba689
core/jni/com_android_internal_os_Zygote.cpp