ActivityManager: use Process.killProcessGroup to kill forked processes
Place newly-created processes in a process group, and use
killProcessGroup to kill any forked processes.
Bug: 15313911
Change-Id: I0f3e2eeebd9a910dae3f6b2801826c92aea03030
diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp
index 0cdddba..989b60ee 100644
--- a/core/jni/com_android_internal_os_Zygote.cpp
+++ b/core/jni/com_android_internal_os_Zygote.cpp
@@ -41,6 +41,7 @@
#include <cutils/sched_policy.h>
#include <utils/String8.h>
#include <selinux/android.h>
+#include <processgroup/processgroup.h>
#include "android_runtime/AndroidRuntime.h"
#include "JNIHelp.h"
@@ -435,6 +436,14 @@
}
}
+ if (!is_system_server) {
+ int rc = createProcessGroup(uid, getpid());
+ if (rc != 0) {
+ ALOGE("createProcessGroup(%d, %d) failed: %s", uid, pid, strerror(-rc));
+ RuntimeAbort(env);
+ }
+ }
+
SetGids(env, javaGids);
SetRLimits(env, javaRlimits);