Replace native Process getpid/getuid with calls to libcore equivalents.
The Process natives were getting called were getting called while
handling a jdwp packet before the vm had a chance to register them.
(cherry-pick of 5bce6a308fc8a3c1e449cf905b8b6e8ace4ef3e2.)
Change-Id: Ia2b4f79b11e427283a712b2d0c52948f394640bf
diff --git a/core/java/android/ddm/DdmHandleHello.java b/core/java/android/ddm/DdmHandleHello.java
index 842a482..220b40d 100644
--- a/core/java/android/ddm/DdmHandleHello.java
+++ b/core/java/android/ddm/DdmHandleHello.java
@@ -97,7 +97,9 @@
}
/*
- * Handle introductory packet.
+ * Handle introductory packet. This is called during JNI_CreateJavaVM
+ * before frameworks native methods are registered, so be careful not
+ * to call any APIs that depend on frameworks native code.
*/
private Chunk handleHELO(Chunk request) {
if (false)
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index 476b4ea..0e38ebc 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -27,6 +27,8 @@
import java.io.OutputStreamWriter;
import java.util.ArrayList;
+import libcore.io.Libcore;
+
/*package*/ class ZygoteStartFailedEx extends Exception {
/**
* Something prevented the zygote process startup from happening normally
@@ -647,7 +649,9 @@
* Returns the identifier of this process, which can be used with
* {@link #killProcess} and {@link #sendSignal}.
*/
- public static final native int myPid();
+ public static final int myPid() {
+ return Libcore.os.getpid();
+ }
/**
* Returns the identifier of the calling thread, which be used with
@@ -661,7 +665,9 @@
* app-specific sandbox. It is different from {@link #myUserHandle} in that
* a uid identifies a specific app sandbox in a specific user.
*/
- public static final native int myUid();
+ public static final int myUid() {
+ return Libcore.os.getuid();
+ }
/**
* Returns this process's user handle. This is the
diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp
index 5d32328..7506e5a 100644
--- a/core/jni/android_util_Process.cpp
+++ b/core/jni/android_util_Process.cpp
@@ -94,16 +94,6 @@
}
}
-jint android_os_Process_myPid(JNIEnv* env, jobject clazz)
-{
- return getpid();
-}
-
-jint android_os_Process_myUid(JNIEnv* env, jobject clazz)
-{
- return getuid();
-}
-
jint android_os_Process_myTid(JNIEnv* env, jobject clazz)
{
return androidGetTid();
@@ -989,9 +979,7 @@
}
static const JNINativeMethod methods[] = {
- {"myPid", "()I", (void*)android_os_Process_myPid},
{"myTid", "()I", (void*)android_os_Process_myTid},
- {"myUid", "()I", (void*)android_os_Process_myUid},
{"getUidForName", "(Ljava/lang/String;)I", (void*)android_os_Process_getUidForName},
{"getGidForName", "(Ljava/lang/String;)I", (void*)android_os_Process_getGidForName},
{"setThreadPriority", "(II)V", (void*)android_os_Process_setThreadPriority},