-
Bug
-
Resolution: Won't Fix
-
P4
-
8-pool
-
generic
-
generic
While merging the JSR 255 sources with the latest JDK 7 branch, I wanted to run the unit tests. I happened upon this deadlock, which I think is unrelated to the merge:
Found one Java-level deadlock:
=============================
"JMX FetchingEventRelay executor 16":
waiting to lock monitor 0x092503e0 (object 0xe9a48178, a javax.management.event.FetchingEventRelay),
which is held by "Thread-50"
"Thread-50":
waiting to lock monitor 0x083ec508 (object 0xe9a48d00, a javax.management.event.FetchingEventRelay$MyJob),
which is held by "JMX FetchingEventRelay executor 16"
Java stack information for the threads listed above:
===================================================
"JMX FetchingEventRelay executor 16":
at javax.management.event.FetchingEventRelay$MyJob.isSuspended(FetchingEventRelay.java:275)
- waiting to lock <0xe9a48178> (a javax.management.event.FetchingEventRelay)
at com.sun.jmx.event.RepeatedSingletonJob.run(RepeatedSingletonJob.java:81)
- locked <0xe9a48d00> (a javax.management.event.FetchingEventRelay$MyJob)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:717)
"Thread-50":
at com.sun.jmx.event.RepeatedSingletonJob.resume(RepeatedSingletonJob.java:55)
- waiting to lock <0xe9a48d00> (a javax.management.event.FetchingEventRelay$MyJob)
at javax.management.event.FetchingEventRelay.setEventReceiver(FetchingEventRelay.java:246)
- locked <0xe9a48178> (a javax.management.event.FetchingEventRelay)
at javax.management.event.EventClient.startListening(EventClient.java:877)
- locked <0xe9a48f20> (a java.util.HashMap)
at javax.management.event.EventClient.addNotificationListener(EventClient.java:425)
at AddRemoveListenerTest.test(AddRemoveListenerTest.java:231)
at AddRemoveListenerTest.test(AddRemoveListenerTest.java:202)
at AddRemoveListenerTest.access$100(AddRemoveListenerTest.java:63)
at AddRemoveListenerTest$Job.run(AddRemoveListenerTest.java:180)
at java.lang.Thread.run(Thread.java:717)
Found one Java-level deadlock:
=============================
"JMX FetchingEventRelay executor 14":
waiting to lock monitor 0x08ed5434 (object 0xe9a47130, a javax.management.event.FetchingEventRelay),
which is held by "Thread-42"
"Thread-42":
waiting to lock monitor 0x0845107c (object 0xe9a47cb8, a javax.management.event.FetchingEventRelay$MyJob),
which is held by "JMX FetchingEventRelay executor 14"
Java stack information for the threads listed above:
===================================================
"JMX FetchingEventRelay executor 14":
at javax.management.event.FetchingEventRelay$MyJob.isSuspended(FetchingEventRelay.java:275)
- waiting to lock <0xe9a47130> (a javax.management.event.FetchingEventRelay)
at com.sun.jmx.event.RepeatedSingletonJob.run(RepeatedSingletonJob.java:81)
- locked <0xe9a47cb8> (a javax.management.event.FetchingEventRelay$MyJob)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:717)
"Thread-42":
at com.sun.jmx.event.RepeatedSingletonJob.resume(RepeatedSingletonJob.java:55)
- waiting to lock <0xe9a47cb8> (a javax.management.event.FetchingEventRelay$MyJob)
at javax.management.event.FetchingEventRelay.setEventReceiver(FetchingEventRelay.java:246)
- locked <0xe9a47130> (a javax.management.event.FetchingEventRelay)
at javax.management.event.EventClient.startListening(EventClient.java:877)
- locked <0xe9a47ed8> (a java.util.HashMap)
at javax.management.event.EventClient.addNotificationListener(EventClient.java:425)
at AddRemoveListenerTest.test(AddRemoveListenerTest.java:231)
at AddRemoveListenerTest.test(AddRemoveListenerTest.java:202)
at AddRemoveListenerTest.access$100(AddRemoveListenerTest.java:63)
at AddRemoveListenerTest$Job.run(AddRemoveListenerTest.java:180)
at java.lang.Thread.run(Thread.java:717)
Found 2 deadlocks.
This is part of JMX 2.0 (JSR 255) so it is not under active development. I am logging this CR so as not to lose sight of it entirely.
Found one Java-level deadlock:
=============================
"JMX FetchingEventRelay executor 16":
waiting to lock monitor 0x092503e0 (object 0xe9a48178, a javax.management.event.FetchingEventRelay),
which is held by "Thread-50"
"Thread-50":
waiting to lock monitor 0x083ec508 (object 0xe9a48d00, a javax.management.event.FetchingEventRelay$MyJob),
which is held by "JMX FetchingEventRelay executor 16"
Java stack information for the threads listed above:
===================================================
"JMX FetchingEventRelay executor 16":
at javax.management.event.FetchingEventRelay$MyJob.isSuspended(FetchingEventRelay.java:275)
- waiting to lock <0xe9a48178> (a javax.management.event.FetchingEventRelay)
at com.sun.jmx.event.RepeatedSingletonJob.run(RepeatedSingletonJob.java:81)
- locked <0xe9a48d00> (a javax.management.event.FetchingEventRelay$MyJob)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:717)
"Thread-50":
at com.sun.jmx.event.RepeatedSingletonJob.resume(RepeatedSingletonJob.java:55)
- waiting to lock <0xe9a48d00> (a javax.management.event.FetchingEventRelay$MyJob)
at javax.management.event.FetchingEventRelay.setEventReceiver(FetchingEventRelay.java:246)
- locked <0xe9a48178> (a javax.management.event.FetchingEventRelay)
at javax.management.event.EventClient.startListening(EventClient.java:877)
- locked <0xe9a48f20> (a java.util.HashMap)
at javax.management.event.EventClient.addNotificationListener(EventClient.java:425)
at AddRemoveListenerTest.test(AddRemoveListenerTest.java:231)
at AddRemoveListenerTest.test(AddRemoveListenerTest.java:202)
at AddRemoveListenerTest.access$100(AddRemoveListenerTest.java:63)
at AddRemoveListenerTest$Job.run(AddRemoveListenerTest.java:180)
at java.lang.Thread.run(Thread.java:717)
Found one Java-level deadlock:
=============================
"JMX FetchingEventRelay executor 14":
waiting to lock monitor 0x08ed5434 (object 0xe9a47130, a javax.management.event.FetchingEventRelay),
which is held by "Thread-42"
"Thread-42":
waiting to lock monitor 0x0845107c (object 0xe9a47cb8, a javax.management.event.FetchingEventRelay$MyJob),
which is held by "JMX FetchingEventRelay executor 14"
Java stack information for the threads listed above:
===================================================
"JMX FetchingEventRelay executor 14":
at javax.management.event.FetchingEventRelay$MyJob.isSuspended(FetchingEventRelay.java:275)
- waiting to lock <0xe9a47130> (a javax.management.event.FetchingEventRelay)
at com.sun.jmx.event.RepeatedSingletonJob.run(RepeatedSingletonJob.java:81)
- locked <0xe9a47cb8> (a javax.management.event.FetchingEventRelay$MyJob)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:717)
"Thread-42":
at com.sun.jmx.event.RepeatedSingletonJob.resume(RepeatedSingletonJob.java:55)
- waiting to lock <0xe9a47cb8> (a javax.management.event.FetchingEventRelay$MyJob)
at javax.management.event.FetchingEventRelay.setEventReceiver(FetchingEventRelay.java:246)
- locked <0xe9a47130> (a javax.management.event.FetchingEventRelay)
at javax.management.event.EventClient.startListening(EventClient.java:877)
- locked <0xe9a47ed8> (a java.util.HashMap)
at javax.management.event.EventClient.addNotificationListener(EventClient.java:425)
at AddRemoveListenerTest.test(AddRemoveListenerTest.java:231)
at AddRemoveListenerTest.test(AddRemoveListenerTest.java:202)
at AddRemoveListenerTest.access$100(AddRemoveListenerTest.java:63)
at AddRemoveListenerTest$Job.run(AddRemoveListenerTest.java:180)
at java.lang.Thread.run(Thread.java:717)
Found 2 deadlocks.
This is part of JMX 2.0 (JSR 255) so it is not under active development. I am logging this CR so as not to lose sight of it entirely.