From 93f2e38160cc774c311ee8fcf6e8d7975b0912ff Mon Sep 17 00:00:00 2001 From: Narayan Kamath Date: Tue, 25 Apr 2017 14:24:07 +0100 Subject: [PATCH] AndroidRuntime: pipe down dalvik.vm.stack-trace-dir Fall back to dalvik.vm.stack-trace-file if it doesn't exist. Test: make Test: manual testing with the property set / empty Bug: 32064548 Change-Id: I23b4c7b26eda5d0fcaf6b976bf1e973a872555c7 --- core/jni/AndroidRuntime.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index 898c27e56d4fe..4be1683ba49c0 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -605,6 +605,7 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) { JavaVMInitArgs initArgs; char propBuf[PROPERTY_VALUE_MAX]; + char stackTraceDirBuf[sizeof("-Xstacktracedir:")-1 + PROPERTY_VALUE_MAX]; char stackTraceFileBuf[sizeof("-Xstacktracefile:")-1 + PROPERTY_VALUE_MAX]; char jniOptsBuf[sizeof("-Xjniopts:")-1 + PROPERTY_VALUE_MAX]; char heapstartsizeOptsBuf[sizeof("-Xms")-1 + PROPERTY_VALUE_MAX]; @@ -682,7 +683,12 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) executionMode = kEMJitCompiler; } - parseRuntimeOption("dalvik.vm.stack-trace-file", stackTraceFileBuf, "-Xstacktracefile:"); + // If dalvik.vm.stack-trace-dir is set, it enables the "new" stack trace + // dump scheme and a new file is created for each stack dump. If it isn't set, + // the old scheme is enabled. + if (!parseRuntimeOption("dalvik.vm.stack-trace-dir", stackTraceDirBuf, "-Xstacktracedir:")) { + parseRuntimeOption("dalvik.vm.stack-trace-file", stackTraceFileBuf, "-Xstacktracefile:"); + } strcpy(jniOptsBuf, "-Xjniopts:"); if (parseRuntimeOption("dalvik.vm.jniopts", jniOptsBuf, "-Xjniopts:")) {