From edc7565f51768eeede4116a97993873beb400675 Mon Sep 17 00:00:00 2001
From: Doug Lea
Date: Fri, 23 Sep 2016 13:21:23 -0700
Subject: [PATCH] 8166059: JSR166TestCase.java fails with NPE in
dumpTestThreads on timeout
Reviewed-by: martin, chegar, shade
---
jdk/test/java/util/concurrent/tck/JSR166TestCase.java | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/jdk/test/java/util/concurrent/tck/JSR166TestCase.java b/jdk/test/java/util/concurrent/tck/JSR166TestCase.java
index aaa97d8abcb..8a0360f9b99 100644
--- a/jdk/test/java/util/concurrent/tck/JSR166TestCase.java
+++ b/jdk/test/java/util/concurrent/tck/JSR166TestCase.java
@@ -1032,14 +1032,17 @@ public class JSR166TestCase extends TestCase {
ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
System.err.println("------ stacktrace dump start ------");
for (ThreadInfo info : threadMXBean.dumpAllThreads(true, true)) {
- String name = info.getThreadName();
+ final String name = info.getThreadName();
+ String lockName;
if ("Signal Dispatcher".equals(name))
continue;
if ("Reference Handler".equals(name)
- && info.getLockName().startsWith("java.lang.ref.Reference$Lock"))
+ && (lockName = info.getLockName()) != null
+ && lockName.startsWith("java.lang.ref.Reference$Lock"))
continue;
if ("Finalizer".equals(name)
- && info.getLockName().startsWith("java.lang.ref.ReferenceQueue$Lock"))
+ && (lockName = info.getLockName()) != null
+ && lockName.startsWith("java.lang.ref.ReferenceQueue$Lock"))
continue;
if ("checkForWedgedTest".equals(name))
continue;
@@ -1783,7 +1786,7 @@ public class JSR166TestCase extends TestCase {
* A CyclicBarrier that uses timed await and fails with
* AssertionFailedErrors instead of throwing checked exceptions.
*/
- public class CheckedBarrier extends CyclicBarrier {
+ public static class CheckedBarrier extends CyclicBarrier {
public CheckedBarrier(int parties) { super(parties); }
public int await() {