Fixes for ThreadStress test
- Fix deadlock when ThreadGroup.remove(Thread) was run with
thread_list_lock_ but needed to GC to allocate an iterator
- Fix ~MonitorList to clean ownership of any locks that might be held
by JNI or daemon threads on shutdown.
Change-Id: I95e23c3b7c745f6a8387789949f3ec849458a27d
diff --git a/test/ThreadStress/ThreadStress.java b/test/ThreadStress/ThreadStress.java
index 94089dc..c294a38 100644
--- a/test/ThreadStress/ThreadStress.java
+++ b/test/ThreadStress/ThreadStress.java
@@ -25,7 +25,7 @@
// javac ThreadTest.java && java ThreadStress && rm *.class
class ThreadStress implements Runnable {
- public static final boolean DEBUG = true;
+ public static final boolean DEBUG = false;
enum Operation {
OOM(1),
@@ -214,9 +214,12 @@
break;
}
case ALLOC: {
- List<byte[]> l = new ArrayList<byte[]>();
- for (int i = 0; i < 1024; i++) {
- l.add(new byte[1024]);
+ try {
+ List<byte[]> l = new ArrayList<byte[]>();
+ for (int i = 0; i < 1024; i++) {
+ l.add(new byte[1024]);
+ }
+ } catch (OutOfMemoryError e) {
}
break;
}
@@ -225,8 +228,7 @@
}
}
}
- }
- finally {
+ } finally {
if (DEBUG) {
System.out.println("Finishing ThreadStress for " + id);
}