summaryrefslogtreecommitdiffstats
path: root/test/StackWalk
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2012-06-26 17:34:00 -0700
committerElliott Hughes <enh@google.com>2012-06-27 12:18:25 -0700
commit08fc03ae5dded4adc9b45b7014a4b9dfedbe95a6 (patch)
tree3e767d037fd3e47e792b88d982ad38bce26d39e9 /test/StackWalk
parentf94404ead1f2e4a1b5a2ff8bbdb65c5e4d4a77ea (diff)
downloadandroid_art-08fc03ae5dded4adc9b45b7014a4b9dfedbe95a6.tar.gz
android_art-08fc03ae5dded4adc9b45b7014a4b9dfedbe95a6.tar.bz2
android_art-08fc03ae5dded4adc9b45b7014a4b9dfedbe95a6.zip
Include held locks in SIGQUIT thread dumps.
Handy if you have an ANR that's locking related. Quick tour: at org.apache.harmony.dalvik.NativeTestTarget.emptyJniStaticSynchronizedMethod0(Native method) - locked <0x60135aa8> (a java.lang.Class<org.apache.harmony.dalvik.NativeTestTarget>) at java.lang.reflect.Method.invoke(Native method) at C.whileTrue(Main.java:63) at C.synchronizedOnClassString(Main.java:56) - locked <0x60002a70> (a java.lang.Class<java.lang.String>) at C.nestedSynchronizationWithTryCatch(Main.java:44) - locked <0x61336b90> (a java.lang.String) - locked <0x61336bd0> (a java.lang.String) at C.nestedSynchronization(Main.java:35) - locked <0x61336b18> (a java.lang.String) - locked <0x61336b50> (a java.lang.String) at C.synchronizedOnClassC(Main.java:30) - locked <0x613366f8> (a java.lang.Class<C>) at C.noLocks(Main.java:27) at C.<clinit>(Main.java:24) - locked <0x613366f8> (a java.lang.Class<C>) at Main.main(Main.java:19) A non-static synchronized native method works too: at org.apache.harmony.dalvik.NativeTestTarget.emptyJniSynchronizedMethod0(Native method) - locked <0x613371a8> (a org.apache.harmony.dalvik.NativeTestTarget) ... Note that most stack traces don't look any different; the above is a pathological example that exercises different kinds of locking. Testing with system_server shows most threads don't hold any locks. Future work (marked by TODO) is that explicit JNI MonitorEnter calls in native code aren't shown. Change-Id: I2747f5cddb4ef64b1935736f084a68fe8e4005e9
Diffstat (limited to 'test/StackWalk')
-rw-r--r--test/StackWalk/stack_walk_jni.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/test/StackWalk/stack_walk_jni.cc b/test/StackWalk/stack_walk_jni.cc
index 37731981ff..9382b8ffab 100644
--- a/test/StackWalk/stack_walk_jni.cc
+++ b/test/StackWalk/stack_walk_jni.cc
@@ -40,8 +40,8 @@ static int gJava_StackWalk_refmap_calls = 0;
struct TestReferenceMapVisitor : public StackVisitor {
explicit TestReferenceMapVisitor(const ManagedStack* stack,
- const std::vector<TraceStackFrame>* trace_stack) :
- StackVisitor(stack, trace_stack) {
+ const std::vector<TraceStackFrame>* trace_stack)
+ : StackVisitor(stack, trace_stack, NULL) {
}
bool VisitFrame() {