Merge "[Debug]: Add timeout for dumpNativeBacktraceToFile." am: b6f7a85b85

am: ec69bd0aa3

Change-Id: Idfe455733dd12bf82c31cb505681e4fa89d57bfb
This commit is contained in:
songjinshi
2017-02-08 20:22:26 +00:00
committed by android-build-merger
3 changed files with 12 additions and 10 deletions

View File

@@ -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.

View File

@@ -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 },
};

View File

@@ -5358,7 +5358,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");
}