diff options
| author | 2023-03-13 16:41:23 +0000 | |
|---|---|---|
| committer | 2023-03-13 16:41:23 +0000 | |
| commit | 03dfa27d40d55fb019cad287e6609fb3a58f246b (patch) | |
| tree | 861c7a6ae62d308f4aedbfc0d7973bf99607747a | |
| parent | c8b5936fea9d54dfba076d62cef7f3a1ea615d7f (diff) | |
| parent | 26cc4077eaa89e76b14bddfc6007aa67285befac (diff) | |
Merge "Treat process group creation failure due to a dead process as non-fatal"
| -rw-r--r-- | core/jni/com_android_internal_os_Zygote.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp index fad9e0e79899..42255bf3793e 100644 --- a/core/jni/com_android_internal_os_Zygote.cpp +++ b/core/jni/com_android_internal_os_Zygote.cpp @@ -1799,10 +1799,15 @@ static void SpecializeCommon(JNIEnv* env, uid_t uid, gid_t gid, jintArray gids, if (!is_system_server && getuid() == 0) { const int rc = createProcessGroup(uid, getpid()); if (rc != 0) { - fail_fn(rc == -EROFS ? CREATE_ERROR("createProcessGroup failed, kernel missing " - "CONFIG_CGROUP_CPUACCT?") - : CREATE_ERROR("createProcessGroup(%d, %d) failed: %s", uid, - /* pid= */ 0, strerror(-rc))); + if (rc == -ESRCH) { + // If process is dead, treat this as a non-fatal error + ALOGE("createProcessGroup(%d, %d) failed: %s", uid, /* pid= */ 0, strerror(-rc)); + } else { + fail_fn(rc == -EROFS ? CREATE_ERROR("createProcessGroup failed, kernel missing " + "CONFIG_CGROUP_CPUACCT?") + : CREATE_ERROR("createProcessGroup(%d, %d) failed: %s", uid, + /* pid= */ 0, strerror(-rc))); + } } } |