The AWT eventqueue thread has called System.exit and is waiting for a shutdown hook thread to complete. I'm guessing that thread is Thread-0, which is currently out in native code executing WToolkit.shutdown. So from the Java stacks there is no way to tell what that thread is doing (ie whether it is making progress).

David

On 21/02/2012 4:22 AM, Pete Brunet wrote:
There is something about a patch I am working on that results in a hang
when exiting an app with a fastdebug build but not with a product
build.  The results of ctrl+break follow.  Could someone look at this
and give me a hint as to what the deadlock is?  Thanks, Pete

Full thread dump OpenJDK Client VM (23.0-b11-fastdebug mixed mode):

"Thread-0" daemon prio=6 tid=0x0863ac00 nid=0x10c8 runnable [0x07d5f000]
    java.lang.Thread.State: RUNNABLE
    JavaThread state: _thread_in_native
Thread: 0x0863ac00  [0x10c8] State: _at_safepoint _has_called_back 0
_at_poll_safepoint 0
    JavaThread state: _thread_in_native
         at sun.awt.windows.WToolkit.shutdown(Native Method)
         at sun.awt.windows.WToolkit.access$200(WToolkit.java:67)
         at sun.awt.windows.WToolkit$2$1.run(WToolkit.java:275)
         at java.lang.Thread.run(Thread.java:722)

"SwingWorker-pool-1-thread-1" daemon prio=6 tid=0x088c3800 nid=0x166c
waiting on condition [0x09d2f000]
    java.lang.Thread.State: WAITING (parking)
    JavaThread state: _thread_blocked
Thread: 0x088c3800  [0x166c] State: _at_safepoint _has_called_back 0
_at_poll_safepoint 0
    JavaThread state: _thread_blocked
         at sun.misc.Unsafe.park(Native Method)
         - parking to wait for<0x15ffc1e0>  (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
         at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
         at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
         at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
         at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1045)
         at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1103)
         at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
         at java.lang.Thread.run(Thread.java:722)

"DestroyJavaVM" prio=6 tid=0x00ec9000 nid=0xfa0 waiting on condition
[0x00000000]
    java.lang.Thread.State: RUNNABLE
    JavaThread state: _thread_blocked
Thread: 0x00ec9000  [0xfa0] State: _at_safepoint _has_called_back 0
_at_poll_safepoint 0
    JavaThread state: _thread_blocked

"AWT-EventQueue-0" prio=6 tid=0x0581f800 nid=0x125c in Object.wait()
[0x084de000]
    java.lang.Thread.State: WAITING (on object monitor)
    JavaThread state: _thread_blocked
Thread: 0x0581f800  [0x125c] State: _at_safepoint _has_called_back 0
_at_poll_safepoint 0
    JavaThread state: _thread_blocked
         at java.lang.Object.wait(Native Method)
         - waiting on<0x155c77e0>  (a java.lang.Thread)
         at java.lang.Thread.join(Thread.java:1258)
         - locked<0x155c77e0>  (a java.lang.Thread)
         at java.lang.Thread.join(Thread.java:1332)
         at
java.lang.ApplicationShutdownHooks.runHooks(ApplicationShutdownHooks.java:106)
         at
java.lang.ApplicationShutdownHooks$1.run(ApplicationShutdownHooks.java:46)
         at java.lang.Shutdown.runHooks(Shutdown.java:123)
         at java.lang.Shutdown.sequence(Shutdown.java:167)
         at java.lang.Shutdown.exit(Shutdown.java:212)
         - locked<0x156be6b8>  (a java.lang.Class for java.lang.Shutdown)
         at java.lang.Runtime.exit(Runtime.java:107)
         at java.lang.System.exit(System.java:961)
         at javax.swing.JFrame.processWindowEvent(JFrame.java:312)
         at java.awt.Window.processEvent(Window.java:2003)
         at java.awt.Component.dispatchEventImpl(Component.java:4866)
         at java.awt.Container.dispatchEventImpl(Container.java:2287)
         at java.awt.Window.dispatchEventImpl(Window.java:2713)
         at java.awt.Component.dispatchEvent(Component.java:4691)
         at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:703)
         at java.awt.EventQueue.access$000(EventQueue.java:102)
         at java.awt.EventQueue$3.run(EventQueue.java:662)
         at java.awt.EventQueue$3.run(EventQueue.java:660)
         at java.security.AccessController.doPrivileged(Native Method)
         at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
         at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
         at java.awt.EventQueue$4.run(EventQueue.java:676)
         at java.awt.EventQueue$4.run(EventQueue.java:674)
         at java.security.AccessController.doPrivileged(Native Method)
         at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:673)
         at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:216)
         at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:135)
         at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:123)
         at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:119)
         at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:111)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

"AWT-Shutdown" prio=6 tid=0x0581f400 nid=0x1bb0 in Object.wait()
[0x0837f000]
    java.lang.Thread.State: WAITING (on object monitor)
    JavaThread state: _thread_blocked
Thread: 0x0581f400  [0x1bb0] State: _at_safepoint _has_called_back 0
_at_poll_safepoint 0
    JavaThread state: _thread_blocked
         at java.lang.Object.wait(Native Method)
         - waiting on<0x15596128>  (a java.lang.Object)
         at java.lang.Object.wait(Object.java:502)
         at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:290)
         - locked<0x15596128>  (a java.lang.Object)
         at java.lang.Thread.run(Thread.java:722)

"TimerQueue" daemon prio=6 tid=0x04df5400 nid=0x18a4 waiting on
condition [0x0862f000]
    java.lang.Thread.State: WAITING (parking)
    JavaThread state: _thread_blocked
Thread: 0x04df5400  [0x18a4] State: _at_safepoint _has_called_back 0
_at_poll_safepoint 0
    JavaThread state: _thread_blocked
         at sun.misc.Unsafe.park(Native Method)
         - parking to wait for<0x15684668>  (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
         at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
         at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
         at java.util.concurrent.DelayQueue.take(DelayQueue.java:209)
         at javax.swing.TimerQueue.run(TimerQueue.java:171)
         at java.lang.Thread.run(Thread.java:722)

"AWT-Windows" daemon prio=6 tid=0x056d7c00 nid=0x1658 runnable [0x05cff000]
    java.lang.Thread.State: RUNNABLE
    JavaThread state: _thread_blocked
Thread: 0x056d7c00  [0x1658] State: _at_safepoint _has_called_back 0
_at_poll_safepoint 0
    JavaThread state: _thread_blocked
         at sun.awt.windows.WToolkit.eventLoop(Native Method)
         at sun.awt.windows.WToolkit.run(WToolkit.java:299)
         at java.lang.Thread.run(Thread.java:722)

"Java2D Disposer" daemon prio=10 tid=0x04e04400 nid=0x478 in
Object.wait() [0x05b0f000]
    java.lang.Thread.State: WAITING (on object monitor)
    JavaThread state: _thread_blocked
Thread: 0x04e04400  [0x478] State: _at_safepoint _has_called_back 0
_at_poll_safepoint 0
    JavaThread state: _thread_blocked
         at java.lang.Object.wait(Native Method)
         - waiting on<0x156847b0>  (a java.lang.ref.ReferenceQueue$Lock)
         at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
         - locked<0x156847b0>  (a java.lang.ref.ReferenceQueue$Lock)
         at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
         at sun.java2d.Disposer.run(Disposer.java:145)
         at java.lang.Thread.run(Thread.java:722)

"Service Thread" daemon prio=6 tid=0x04cf8800 nid=0x1bb8 runnable
[0x00000000]
    java.lang.Thread.State: RUNNABLE
    JavaThread state: _thread_blocked
Thread: 0x04cf8800  [0x1bb8] State: _at_safepoint _has_called_back 0
_at_poll_safepoint 0
    JavaThread state: _thread_blocked

"C1 CompilerThread0" daemon prio=10 tid=0x04cf2800 nid=0x598 waiting on
condition [0x00000000]
    java.lang.Thread.State: RUNNABLE
    JavaThread state: _thread_blocked
Thread: 0x04cf2800  [0x598] State: _at_safepoint _has_called_back 0
_at_poll_safepoint 0
    JavaThread state: _thread_blocked

"Attach Listener" daemon prio=10 tid=0x04cee000 nid=0x108 runnable
[0x00000000]
    java.lang.Thread.State: RUNNABLE
    JavaThread state: _thread_blocked
Thread: 0x04cee000  [0x108] State: _at_safepoint _has_called_back 0
_at_poll_safepoint 0
    JavaThread state: _thread_blocked

"Signal Dispatcher" daemon prio=10 tid=0x04ceac00 nid=0x1678 waiting on
condition [0x00000000]
    java.lang.Thread.State: RUNNABLE
    JavaThread state: _thread_blocked
Thread: 0x04ceac00  [0x1678] State: _at_safepoint _has_called_back 0
_at_poll_safepoint 0
    JavaThread state: _thread_blocked

"Finalizer" daemon prio=8 tid=0x04c35c00 nid=0x12b4 in Object.wait()
[0x04fef000]
    java.lang.Thread.State: WAITING (on object monitor)
    JavaThread state: _thread_blocked
Thread: 0x04c35c00  [0x12b4] State: _at_safepoint _has_called_back 0
_at_poll_safepoint 0
    JavaThread state: _thread_blocked
         at java.lang.Object.wait(Native Method)
         - waiting on<0x15684a78>  (a java.lang.ref.ReferenceQueue$Lock)
         at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
         - locked<0x15684a78>  (a java.lang.ref.ReferenceQueue$Lock)
         at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
         at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177)

"Reference Handler" daemon prio=10 tid=0x04c30c00 nid=0xd48 in
Object.wait() [0x0100f000]
    java.lang.Thread.State: WAITING (on object monitor)
    JavaThread state: _thread_blocked
Thread: 0x04c30c00  [0xd48] State: _at_safepoint _has_called_back 0
_at_poll_safepoint 0
    JavaThread state: _thread_blocked
         at java.lang.Object.wait(Native Method)
         - waiting on<0x15684b00>  (a java.lang.ref.Reference$Lock)
         at java.lang.Object.wait(Object.java:502)
         at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:142)
         - locked<0x15684b00>  (a java.lang.ref.Reference$Lock)

"VM Thread" prio=10 tid=0x00f9fc00 nid=0x1a38 runnable

"VM Periodic Task Thread" prio=10 tid=0x04d09c00 nid=0x1aa0 waiting on
condition


Compiler thread printing unimplemented.

JNI global references: 569

Heap
  def new generation   total 13952K, used 13140K [0x10030000, 0x10f50000,
0x15580000)
   eden space 12416K,  98% used [0x10030000, 0x10c2e050, 0x10c50000)
   from space 1536K,  56% used [0x10c50000, 0x10d27328, 0x10dd0000)
   to   space 1536K,   0% used [0x10dd0000, 0x10dd0000, 0x10f50000)
  tenured generation   total 30860K, used 19177K [0x15580000, 0x173a3000,
0x20030000)
    the space 30860K,  62% used [0x15580000, 0x1683a478, 0x1683a600,
0x173a3000)
  compacting perm gen  total 12288K, used 11265K [0x20030000, 0x20c30000,
0x24030000)
    the space 12288K,  91% used [0x20030000, 0x20b30568, 0x20b30600,
0x20c30000)
No shared spaces configured.


C:\OpenJDK\jdk8\build\windows-i586-fastdebug>

Reply via email to