diff options
| -rw-r--r-- | core/java/android/os/Debug.java | 8 | ||||
| -rw-r--r-- | core/jni/android_os_Debug.cpp | 11 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 3 |
3 files changed, 12 insertions, 10 deletions
diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java index 210ddb6cd397..e05bd89079af 100644 --- a/core/java/android/os/Debug.java +++ b/core/java/android/os/Debug.java @@ -2219,11 +2219,13 @@ public final class Debug } /** - * Have the stack traces of the given native process dumped to the - * specified file. Will be appended to the file. + * Append the stack traces of a given native process to a specified file. + * @param pid pid to dump. + * @param file path of file to append dump to. + * @param timeoutSecs time to wait in seconds, or 0 to wait forever. * @hide */ - public static native void dumpNativeBacktraceToFile(int pid, String file); + public static native void dumpNativeBacktraceToFileTimeout(int pid, String file, int timeoutSecs); /** * Get description of unreachable native memory. diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp index cbe2bbae80da..3a2df75c90f9 100644 --- a/core/jni/android_os_Debug.cpp +++ b/core/jni/android_os_Debug.cpp @@ -1012,9 +1012,8 @@ static void android_os_Debug_dumpNativeHeap(JNIEnv* env, jobject clazz, ALOGD("Native heap dump complete.\n"); } - -static void android_os_Debug_dumpNativeBacktraceToFile(JNIEnv* env, jobject clazz, - jint pid, jstring fileName) +static void android_os_Debug_dumpNativeBacktraceToFileTimeout(JNIEnv* env, jobject clazz, + jint pid, jstring fileName, jint timeoutSecs) { if (fileName == NULL) { jniThrowNullPointerException(env, "file == null"); @@ -1037,7 +1036,7 @@ static void android_os_Debug_dumpNativeBacktraceToFile(JNIEnv* env, jobject claz if (lseek(fd, 0, SEEK_END) < 0) { fprintf(stderr, "lseek: %s\n", strerror(errno)); } else { - dump_backtrace_to_file(pid, fd); + dump_backtrace_to_file_timeout(pid, fd, timeoutSecs); } close(fd); @@ -1083,8 +1082,8 @@ static const JNINativeMethod gMethods[] = { (void*)android_os_Debug_getProxyObjectCount }, { "getBinderDeathObjectCount", "()I", (void*)android_os_Debug_getDeathObjectCount }, - { "dumpNativeBacktraceToFile", "(ILjava/lang/String;)V", - (void*)android_os_Debug_dumpNativeBacktraceToFile }, + { "dumpNativeBacktraceToFileTimeout", "(ILjava/lang/String;I)V", + (void*)android_os_Debug_dumpNativeBacktraceToFileTimeout }, { "getUnreachableMemory", "(IZ)Ljava/lang/String;", (void*)android_os_Debug_getUnreachableMemory }, }; diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index e23f0800ea3d..81b13b7ba582 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -5352,7 +5352,8 @@ public final class ActivityManagerService extends ActivityManagerNative for (int pid : pids) { if (DEBUG_ANR) Slog.d(TAG, "Collecting stacks for native pid " + pid); final long sime = SystemClock.elapsedRealtime(); - Debug.dumpNativeBacktraceToFile(pid, tracesPath); + + Debug.dumpNativeBacktraceToFileTimeout(pid, tracesPath, 10); if (DEBUG_ANR) Slog.d(TAG, "Done with native pid " + pid + " in " + (SystemClock.elapsedRealtime()-sime) + "ms"); } |