Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6959427

Deadlock in Event Service

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: P4 P4
    • tbd
    • 8-pool
    • core-svc

      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.

            sjiang Shanliang Jiang (Inactive)
            emcmanus Eamonn McManus
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: