Zygote: Unblock SIGCHLD in the parent after fork.

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

Change-Id: I81fde39a2dd32eaf7d8b397672d3165a4eb945e1
Contributed-By: rhed_jao <rhed_jao@htc.com>
Bug: 32693692
Test: manual
This commit is contained in:
Narayan Kamath
2016-11-09 09:25:03 +00:00
parent e9a525829a
commit 1480dc3e97

View File

@@ -628,6 +628,12 @@ static pid_t ForkAndSpecializeCommon(JNIEnv* env, uid_t uid, gid_t gid, jintArra
}
} else if (pid > 0) {
// the parent process
// We blocked SIGCHLD prior to a fork, we unblock it here.
if (sigprocmask(SIG_UNBLOCK, &sigchld, nullptr) == -1) {
ALOGE("sigprocmask(SIG_SETMASK, { SIGCHLD }) failed: %s", strerror(errno));
RuntimeAbort(env, __LINE__, "Call to sigprocmask(SIG_UNBLOCK, { SIGCHLD }) failed.");
}
}
return pid;
}