ART: Fix GetAllStackTraces
Correctly select threads, skip starting threads. Amend test.
Bug: 31684812
Test: m ART_TEST_JIT=true test-art-host-run-test-911-get-stack-trace
Change-Id: Ieae6ba135ec7ec677615064ca020e10e14ec2cfe
diff --git a/runtime/openjdkjvmti/ti_stack.cc b/runtime/openjdkjvmti/ti_stack.cc
index e33ea5f..098cedb 100644
--- a/runtime/openjdkjvmti/ti_stack.cc
+++ b/runtime/openjdkjvmti/ti_stack.cc
@@ -272,6 +272,11 @@
}
for (art::Thread* thread : thread_list) {
+ // Skip threads that are still starting.
+ if (thread->IsStillStarting()) {
+ continue;
+ }
+
GetStackTraceClosure closure(0u, static_cast<size_t>(max_frame_count));
thread->RequestSynchronousCheckpoint(&closure);
diff --git a/test/911-get-stack-trace/expected.txt b/test/911-get-stack-trace/expected.txt
index 284a071..e40698a 100644
--- a/test/911-get-stack-trace/expected.txt
+++ b/test/911-get-stack-trace/expected.txt
@@ -4,72 +4,72 @@
From top
---------
getStackTrace (Ljava/lang/Thread;II)[[Ljava/lang/String; -1 -2
- print (Ljava/lang/Thread;II)V 0 172
- printOrWait (IILMain$ControlData;)V 6 235
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ print (Ljava/lang/Thread;II)V 0 183
+ printOrWait (IILMain$ControlData;)V 6 246
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
doTest ()V 38 41
main ([Ljava/lang/String;)V 6 27
---------
- print (Ljava/lang/Thread;II)V 0 172
- printOrWait (IILMain$ControlData;)V 6 235
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ print (Ljava/lang/Thread;II)V 0 183
+ printOrWait (IILMain$ControlData;)V 6 246
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
doTest ()V 42 42
main ([Ljava/lang/String;)V 6 27
---------
getStackTrace (Ljava/lang/Thread;II)[[Ljava/lang/String; -1 -2
- print (Ljava/lang/Thread;II)V 0 172
- printOrWait (IILMain$ControlData;)V 6 235
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
+ print (Ljava/lang/Thread;II)V 0 183
+ printOrWait (IILMain$ControlData;)V 6 246
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
---------
- printOrWait (IILMain$ControlData;)V 6 235
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
+ printOrWait (IILMain$ControlData;)V 6 246
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
From bottom
---------
main ([Ljava/lang/String;)V 6 27
---------
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
doTest ()V 65 48
main ([Ljava/lang/String;)V 6 27
---------
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
################################
### Other thread (suspended) ###
@@ -77,135 +77,135 @@
From top
---------
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
run ()V 4 61
---------
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
run ()V 4 61
---------
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
---------
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
From bottom
---------
run ()V 4 61
---------
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
run ()V 4 61
---------
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
###########################
### Other thread (live) ###
###########################
From top
---------
- printOrWait (IILMain$ControlData;)V 44 248
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ printOrWait (IILMain$ControlData;)V 44 259
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
run ()V 4 95
---------
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
run ()V 4 95
---------
- printOrWait (IILMain$ControlData;)V 44 248
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
+ printOrWait (IILMain$ControlData;)V 44 259
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
---------
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
From bottom
---------
run ()V 4 95
---------
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
run ()V 4 95
---------
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
################################
### Other threads (suspended) ###
@@ -232,10 +232,10 @@
Thread-11
---------
-Thread-2
+Thread-12
---------
-Thread-3
+Thread-13
---------
Thread-4
@@ -276,88 +276,88 @@
---------
Thread-10
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
---------
Thread-11
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
---------
-Thread-2
+Thread-12
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
---------
-Thread-3
+Thread-13
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
---------
Thread-4
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
---------
Thread-5
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
---------
Thread-6
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
---------
Thread-7
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
---------
Thread-8
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
---------
Thread-9
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
---------
main
getAllStackTraces (I)[[Ljava/lang/Object; -1 -2
- printAll (I)V 0 208
- doTestAllStackTraces ()V 81 147
+ printAll (I)V 0 219
+ doTestAllStackTraces ()V 107 156
main ([Ljava/lang/String;)V 15 31
---------
@@ -378,218 +378,218 @@
---------
Thread-10
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- run ()V 4 135
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ run ()V 4 144
---------
Thread-11
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- run ()V 4 135
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ run ()V 4 144
---------
-Thread-2
+Thread-12
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- run ()V 4 135
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ run ()V 4 144
---------
-Thread-3
+Thread-13
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- run ()V 4 135
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ run ()V 4 144
---------
Thread-4
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- run ()V 4 135
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ run ()V 4 144
---------
Thread-5
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- run ()V 4 135
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ run ()V 4 144
---------
Thread-6
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- run ()V 4 135
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ run ()V 4 144
---------
Thread-7
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- run ()V 4 135
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ run ()V 4 144
---------
Thread-8
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- run ()V 4 135
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ run ()V 4 144
---------
Thread-9
wait ()V -1 -2
- printOrWait (IILMain$ControlData;)V 24 241
- baz (IIILMain$ControlData;)Ljava/lang/Object; 2 226
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- baz (IIILMain$ControlData;)Ljava/lang/Object; 9 228
- bar (IIILMain$ControlData;)J 0 220
- foo (IIILMain$ControlData;)I 0 215
- run ()V 4 135
+ printOrWait (IILMain$ControlData;)V 24 252
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 2 237
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ baz (IIILMain$ControlData;)Ljava/lang/Object; 9 239
+ bar (IIILMain$ControlData;)J 0 231
+ foo (IIILMain$ControlData;)I 0 226
+ run ()V 4 144
---------
main
getAllStackTraces (I)[[Ljava/lang/Object; -1 -2
- printAll (I)V 0 208
- doTestAllStackTraces ()V 86 149
+ printAll (I)V 0 219
+ doTestAllStackTraces ()V 112 158
main ([Ljava/lang/String;)V 15 31
Done
diff --git a/test/911-get-stack-trace/src/Main.java b/test/911-get-stack-trace/src/Main.java
index 500e945..3479abb 100644
--- a/test/911-get-stack-trace/src/Main.java
+++ b/test/911-get-stack-trace/src/Main.java
@@ -116,12 +116,21 @@
t.join();
}
+ private final static List<Object> RETAIN = new ArrayList<Object>();
+
public static void doTestAllStackTraces() throws Exception {
System.out.println();
System.out.println("################################");
System.out.println("### Other threads (suspended) ###");
System.out.println("################################");
+ // Also create an unstarted and a dead thread.
+ RETAIN.add(new Thread());
+ Thread deadThread = new Thread();
+ RETAIN.add(deadThread);
+ deadThread.start();
+ deadThread.join();
+
final int N = 10;
final ControlData data = new ControlData(N);
@@ -155,6 +164,8 @@
for (int i = 0; i < N; i++) {
threads[i].join();
}
+
+ RETAIN.clear();
}
public static void print(String[][] stack) {