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

Classloading lock owned by a thread that hasn't appeared to sync on it blocking other threads from proceeding.

    XMLWordPrintable

Details

    Description


      According to the thread dump 0x00000000e0463f10 is a
      ReentrantLock$NonfairSync which two other threads are waiting to lock. It is
      not clear from the thread dump which thread currently owns this lock, however
      using kjdb & SA we see the following:

      hsdb> inspect 0x00000000e0463f10
      instance of Oop for java/util/concurrent/locks/ReentrantLock$NonfairSync @
      0xe0463f10 @ 0xe0463f10 (size = 32)
      _mark: 49
      exclusiveOwnerThread: Oop for weblogic/work/ExecuteThread @ 0xe075e5b8 Oop
      for weblogic/work/ExecuteThread @ 0xe075e5b8
      head: Oop for java/util/concurrent/locks/AbstractQueuedSynchronizer$Node @
      0xf869b810 Oop for java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
      0xf869b810
      tail: Oop for java/util/concurrent/locks/AbstractQueuedSynchronizer$Node @
      0xf88cf6f0 Oop for java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
      0xf88cf6f0
      state: 1

      inspect the owner thread:

      hsdb> inspect 0xe075e5b8
      instance of Oop for weblogic/work/ExecuteThread @ 0xe075e5b8 @ 0xe075e5b8
      (size = 192)
      _mark: 46912794892362
      name: [C @ 0xe075e678 Oop for [C @ 0xe075e678
      priority: 5
      ...
      ...
      activeName: "[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default
      (self-tuning)'" @ 0xe07843c0 Oop for java/lang/String @ 0xe07843c0


      x:c>threads | grep ExecuteThread


      x:c>thread 0x6451
      Thread: id = 0x6451 [ACTIVE] ExecuteThread: '0' for queue:
      'weblogic.kernel.Default (self-tuning)' JavaThread
      Oop=sun.jvm.hotspot.oops.Instance@e075e5b8 SP=0x4152f6a0 Stack: 0x4152f6a0 -
      0x4152f9c0 used = 0x320(800b)

      Thread nid=0x6451: (state = BLOCKED, current Java SP = 0x4152f8a0

       - java.lang.Object.wait(long) @bci=0, pc=0x2aaaab81bf67,
      methodOop=0xd0002758 (Compiled frame; information may be imprecise)
       - java.lang.Object.wait() @bci=2, line=503, pc=0x2aaaab198058,
      methodOop=0xd0002948 (Interpreted frame)
       - weblogic.work.ExecuteThread.waitForRequest() @bci=8, line=232,
      pc=0x2aaaab198058, methodOop=0xd1b04c70 (Interpreted frame)
       - weblogic.work.ExecuteThread.run() @bci=120, line=266, pc=0x2aaaab87bf60,
      methodOop=0xd1b04eb0 (Compiled frame)


      This corresponds to the thread dump:

      "[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default
      (self-tuning)'" daemon prio=10 tid=0x00002aaab495b800 nid=0x6451 in
      Object.wait() [0x000000004152f000]
         java.lang.Thread.State: WAITING (on object monitor)
              at java.lang.Object.wait(Native Method)
              at java.lang.Object.wait(Object.java:503)
              at weblogic.work.ExecuteThread.waitForRequest(ExecuteThread.java:232)
              - locked <0x00000000e075e5b8> (a weblogic.work.ExecuteThread)
              at weblogic.work.ExecuteThread.run(ExecuteThread.java:266)

      It is not clear how this thread came to own the lock.

      Attachments

        Issue Links

          Activity

            People

              robm Robert Mckenna
              asaha Abhijit Saha
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: