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 284a071f..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) {