-
Bug
-
Resolution: Fixed
-
P3
-
6
-
b77
-
generic
-
generic
The test program is attached.
Here is what happens when it is run, and jstack -F is
run on its PID:
java TestDeadlock &
[2] 10120
B trying to own monitor 2
B now owns monitor 2
A trying to own monitor 1
A now owns monitor 1
C trying to own monitor 3
C now owns monitor 3
D trying to own monitor 4
D now owns monitor 4
C trying to own monitor 4
D trying to own monitor 1
B trying to own monitor 3
A trying to own monitor 2
jstack -F 10120
Attaching to process ID 10120, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 1.6.0-rc-b66
Deadlock Detection:
Found one Java-level deadlock:
=============================
"C":
waiting for ownable synchronizer nulljava.lang.NullPointerException
at sun.jvm.hotspot.runtime.DeadlockDetector.printOneDeadlock(DeadlockDetector.java:181)
at sun.jvm.hotspot.runtime.DeadlockDetector.print(DeadlockDetector.java:100)
at sun.jvm.hotspot.runtime.DeadlockDetector.print(DeadlockDetector.java:22)
at sun.jvm.hotspot.tools.StackTrace.run(StackTrace.java:35)
at sun.jvm.hotspot.tools.StackTrace.run(StackTrace.java:28)
at sun.jvm.hotspot.tools.JStack.run(JStack.java:43)
at sun.jvm.hotspot.tools.Tool.start(Tool.java:204)
at sun.jvm.hotspot.tools.JStack.main(JStack.java:69)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:589)
at sun.tools.jstack.JStack.runJStackTool(JStack.java:117)
at sun.tools.jstack.JStack.main(JStack.java:83)
Can't print deadlocks:null
Thread t@2: (state = BLOCKED)
Thread t@16: (state = BLOCKED)
- TestDeadlock.two(java.lang.String) @bci=39, line=53 (Interpreted frame)
- TestDeadlock.one(java.lang.String) @bci=77, line=44 (Interpreted frame)
- TestDeadlock.run() @bci=7, line=32 (Interpreted frame)
Thread t@15: (state = BLOCKED)
- TestDeadlock.two(java.lang.String) @bci=39, line=53 (Interpreted frame)
- TestDeadlock.one(java.lang.String) @bci=77, line=44 (Interpreted frame)
- TestDeadlock.run() @bci=7, line=32 (Interpreted frame)
Thread t@14: (state = BLOCKED)
- TestDeadlock.two(java.lang.String) @bci=39, line=53 (Interpreted frame)
- TestDeadlock.one(java.lang.String) @bci=77, line=44 (Interpreted frame)
- TestDeadlock.run() @bci=7, line=32 (Interpreted frame)
Thread t@13: (state = BLOCKED)
- TestDeadlock.two(java.lang.String) @bci=39, line=53 (Interpreted frame)
- TestDeadlock.one(java.lang.String) @bci=77, line=44 (Interpreted frame)
- TestDeadlock.run() @bci=7, line=32 (Interpreted frame)
Thread t@8: (state = BLOCKED)
Thread t@7: (state = BLOCKED)
- java.lang.Object.wait(long) @bci=675260531 (Interpreted frame)
- java.lang.Object.wait(long) @bci=0 (Interpreted frame)
- java.lang.ref.ReferenceQueue.remove(long) @bci=44, line=116 (Interpreted frame)
- java.lang.ref.ReferenceQueue.remove() @bci=2, line=132 (Interpreted frame)
- java.lang.ref.Finalizer$FinalizerThread.run() @bci=3, line=159 (Interpreted frame)
Thread t@6: (state = BLOCKED)
- java.lang.Object.wait(long) @bci=-1472223120 (Interpreted frame)
- java.lang.Object.wait(long) @bci=0 (Interpreted frame)
- java.lang.Object.wait() @bci=2, line=484 (Interpreted frame)
- java.lang.ref.Reference$ReferenceHandler.run() @bci=46, line=116 (Interpreted frame)
Here is what happens when it is run, and jstack -F is
run on its PID:
java TestDeadlock &
[2] 10120
B trying to own monitor 2
B now owns monitor 2
A trying to own monitor 1
A now owns monitor 1
C trying to own monitor 3
C now owns monitor 3
D trying to own monitor 4
D now owns monitor 4
C trying to own monitor 4
D trying to own monitor 1
B trying to own monitor 3
A trying to own monitor 2
jstack -F 10120
Attaching to process ID 10120, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 1.6.0-rc-b66
Deadlock Detection:
Found one Java-level deadlock:
=============================
"C":
waiting for ownable synchronizer nulljava.lang.NullPointerException
at sun.jvm.hotspot.runtime.DeadlockDetector.printOneDeadlock(DeadlockDetector.java:181)
at sun.jvm.hotspot.runtime.DeadlockDetector.print(DeadlockDetector.java:100)
at sun.jvm.hotspot.runtime.DeadlockDetector.print(DeadlockDetector.java:22)
at sun.jvm.hotspot.tools.StackTrace.run(StackTrace.java:35)
at sun.jvm.hotspot.tools.StackTrace.run(StackTrace.java:28)
at sun.jvm.hotspot.tools.JStack.run(JStack.java:43)
at sun.jvm.hotspot.tools.Tool.start(Tool.java:204)
at sun.jvm.hotspot.tools.JStack.main(JStack.java:69)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:589)
at sun.tools.jstack.JStack.runJStackTool(JStack.java:117)
at sun.tools.jstack.JStack.main(JStack.java:83)
Can't print deadlocks:null
Thread t@2: (state = BLOCKED)
Thread t@16: (state = BLOCKED)
- TestDeadlock.two(java.lang.String) @bci=39, line=53 (Interpreted frame)
- TestDeadlock.one(java.lang.String) @bci=77, line=44 (Interpreted frame)
- TestDeadlock.run() @bci=7, line=32 (Interpreted frame)
Thread t@15: (state = BLOCKED)
- TestDeadlock.two(java.lang.String) @bci=39, line=53 (Interpreted frame)
- TestDeadlock.one(java.lang.String) @bci=77, line=44 (Interpreted frame)
- TestDeadlock.run() @bci=7, line=32 (Interpreted frame)
Thread t@14: (state = BLOCKED)
- TestDeadlock.two(java.lang.String) @bci=39, line=53 (Interpreted frame)
- TestDeadlock.one(java.lang.String) @bci=77, line=44 (Interpreted frame)
- TestDeadlock.run() @bci=7, line=32 (Interpreted frame)
Thread t@13: (state = BLOCKED)
- TestDeadlock.two(java.lang.String) @bci=39, line=53 (Interpreted frame)
- TestDeadlock.one(java.lang.String) @bci=77, line=44 (Interpreted frame)
- TestDeadlock.run() @bci=7, line=32 (Interpreted frame)
Thread t@8: (state = BLOCKED)
Thread t@7: (state = BLOCKED)
- java.lang.Object.wait(long) @bci=675260531 (Interpreted frame)
- java.lang.Object.wait(long) @bci=0 (Interpreted frame)
- java.lang.ref.ReferenceQueue.remove(long) @bci=44, line=116 (Interpreted frame)
- java.lang.ref.ReferenceQueue.remove() @bci=2, line=132 (Interpreted frame)
- java.lang.ref.Finalizer$FinalizerThread.run() @bci=3, line=159 (Interpreted frame)
Thread t@6: (state = BLOCKED)
- java.lang.Object.wait(long) @bci=-1472223120 (Interpreted frame)
- java.lang.Object.wait(long) @bci=0 (Interpreted frame)
- java.lang.Object.wait() @bci=2, line=484 (Interpreted frame)
- java.lang.ref.Reference$ReferenceHandler.run() @bci=46, line=116 (Interpreted frame)