Sure enough, the deadlock. I don't know anything about the "AWT-AppKit"
thread, but this looks like a bug in the jvm?
I installed two patches today, one of which was for quicktime. I can't
recall the other. I haven't used this code nor patched the machine in
weeks. Moreover, I first had the bug reported to me a while ago (a few
weeks?). So, I have no reason to think it has anything to do with the
patch.
Charles.
===== Tuesday, January 10, 2006 2:52:08 PM US/Pacific =====
Full thread dump Java HotSpot(TM) Client VM (1.4.2-54 mixed mode):
"Thread-40" prio=1 tid=0x00594730 nid=0x1b2b6800 in Object.wait()
[f1112000..f1112ac0]
at java.lang.Object.wait(Native Method)
- waiting on <0x4a7746c0> (a java.lang.Thread)
at java.lang.Thread.join(Thread.java:1027)
- locked <0x4a7746c0> (a java.lang.Thread)
at digilabs.utils.Utils$1.run(Utils.java:1041)
at java.lang.Thread.run(Thread.java:552)
"Thread-39" prio=6 tid=0x00567c90 nid=0x19f9600 waiting for monitor entry
[f0d8b000..f0d8bac0]
at java.awt.EventQueue.postEventPrivate(EventQueue.java:211)
- waiting to lock <0x4dc891b8> (a java.awt.EventQueue)
at java.awt.EventQueue.postEvent(EventQueue.java:198)
at sun.awt.PostEventQueue.flush(SunToolkit.java:713)
- locked <0x4dc891a0> (a sun.awt.PostEventQueue)
at sun.awt.SunToolkit.flushPendingEvents(SunToolkit.java:350)
at java.awt.EventQueue.postEvent(EventQueue.java:197)
at java.awt.EventQueue.invokeLater(EventQueue.java:816)
at javax.swing.SwingUtilities.invokeLater(SwingUtilities.java:1170)
at digilabs.CalFrame.ReportProgress(CalFrame.java:5246)
at digilabs.io.ZipPackage.ZipFile(ZipPackage.java:199)
at digilabs.io.ZipPackage.DoArchive(ZipPackage.java:146)
at digilabs.io.ZipPackage.Archive(ZipPackage.java:122)
at digilabs.spool.JobUploader.CreatePackageSynch(JobUploader.java:969)
at digilabs.spool.JobUploader.DoCreatePackage(JobUploader.java:185)
at digilabs.spool.RemoteJobsSpooler.PrintingDone(RemoteJobsSpooler.java:77)
at digilabs.spool.Spooler.DonePrinting(Spooler.java:241)
at digilabs.spool.Spooler$2.run(Spooler.java:221)
at java.lang.Thread.run(Thread.java:552)
"DestroyJavaVM" prio=5 tid=0x005010c0 nid=0x1802600 waiting on condition
[0..f0800a10]
"TimerQueue" daemon prio=5 tid=0x0052c740 nid=0x198b200 waiting for monitor
entry [f0f0e000..f0f0eac0]
at java.awt.EventQueue.postEventPrivate(EventQueue.java:211)
- waiting to lock <0x4dc891b8> (a java.awt.EventQueue)
at java.awt.EventQueue.postEvent(EventQueue.java:198)
at java.awt.EventQueue.invokeLater(EventQueue.java:816)
at javax.swing.SwingUtilities.invokeLater(SwingUtilities.java:1170)
at javax.swing.Timer.post(Timer.java:538)
- locked <0x4df01be0> (a javax.swing.Timer)
at javax.swing.TimerQueue.postExpiredTimers(TimerQueue.java:193)
- locked <0x4de2e1d8> (a javax.swing.TimerQueue)
at javax.swing.TimerQueue.run(TimerQueue.java:229)
- locked <0x4de2e1d8> (a javax.swing.TimerQueue)
at java.lang.Thread.run(Thread.java:552)
"AWT-EventQueue-0" prio=6 tid=0x0051eb70 nid=0x194ca00 waiting for monitor
entry [f100f000..f1010ac0]
at
java.awt.EventQueue.setCurrentEventAndMostRecentTimeImpl(EventQueue.java:775)
- waiting to lock <0x4dc891b8> (a java.awt.EventQueue)
at java.awt.EventQueue.setCurrentEventAndMostRecentTime(EventQueue.java:771)
at java.awt.Component.dispatchEventImpl(Component.java:3552)
at java.awt.Container.dispatchEventImpl(Container.java:1671)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3543)
at
java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1713)
at
java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:777)
at
java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:327)
at java.awt.Component.dispatchEventImpl(Component.java:3572)
at java.awt.Container.dispatchEventImpl(Container.java:1671)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3543)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:480)
at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:178)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:170)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
"SocketTimeout" daemon prio=10 tid=0x0051d290 nid=0x18e7800 waiting on
condition [f0e8d000..f0e8dac0]
at java.lang.Thread.sleep(Native Method)
at HTTPClient.SocketTimeout.run(StreamDemultiplexor.java:917)
"Java2D Disposer" daemon prio=10 tid=0x00515520 nid=0x18d9600 in
Object.wait() [f0e0c000..f0e0cac0]
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
- locked <0x4dc9ef10> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
at sun.java2d.Disposer.run(Disposer.java:116)
at java.lang.Thread.run(Thread.java:552)
"Thread-1" prio=5 tid=0x005117d0 nid=0x18bb400 in Object.wait()
[f0d0a000..f0d0aac0]
at java.lang.Object.wait(Native Method)
- waiting on <0x4dc875d0> (a java.util.TaskQueue)
at java.util.TimerThread.mainLoop(Timer.java:429)
- locked <0x4dc875d0> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:382)
"AWT-Shutdown" prio=5 tid=0x0050cf40 nid=0x1884400 in Object.wait()
[f0c89000..f0c89ac0]
at java.lang.Object.wait(Native Method)
- waiting on <0x4dc78918> (a java.lang.Object)
at java.lang.Object.wait(Object.java:429)
at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259)
- locked <0x4dc78918> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:552)
"AWT-AppKit" daemon prio=5 tid=0x0050ccd0 nid=0xa000ed68 waiting for monitor
entry [bfffd000..f0d8a4c0]
at sun.awt.PostEventQueue.postEvent(SunToolkit.java:726)
- waiting to lock <0x4dc891a0> (a sun.awt.PostEventQueue)
at sun.awt.SunToolkit.postEvent(SunToolkit.java:337)
at apple.awt.CToolkit.postEvent(CToolkit.java:1001)
at apple.awt.EventFactoryProxy.forwardEvent(EventFactoryProxy.java:63)
"Signal Dispatcher" daemon prio=10 tid=0x005084c0 nid=0x1814600 waiting on
condition [0..0]
"Finalizer" daemon prio=8 tid=0x00506fa0 nid=0x1814200 in Object.wait()
[f0a04000..f0a04ac0]
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
- locked <0x4dc6e330> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
"Reference Handler" daemon prio=10 tid=0x00506c70 nid=0x1802a00 in
Object.wait() [f0983000..f0983ac0]
at java.lang.Object.wait(Native Method)
- waiting on <0x4dc6e398> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:429)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115)
- locked <0x4dc6e398> (a java.lang.ref.Reference$Lock)
Found one Java-level deadlock:
=============================
"Thread-39":
waiting to lock monitor 0x1802eb8 (object 0x4dc891b8, a
java.awt.EventQueue),
which is held by "AWT-AppKit"
"AWT-AppKit":
waiting to lock monitor 0x1802f90 (object 0x4dc891a0, a
sun.awt.PostEventQueue),
which is held by "Thread-39"
Java stack information for the threads listed above:
===================================================
"Thread-39":
at java.awt.EventQueue.postEventPrivate(EventQueue.java:211)
- waiting to lock <0x4dc891b8> (a java.awt.EventQueue)
at java.awt.EventQueue.postEvent(EventQueue.java:198)
at sun.awt.PostEventQueue.flush(SunToolkit.java:713)
- locked <0x4dc891a0> (a sun.awt.PostEventQueue)
at sun.awt.SunToolkit.flushPendingEvents(SunToolkit.java:350)
at java.awt.EventQueue.postEvent(EventQueue.java:197)
at java.awt.EventQueue.invokeLater(EventQueue.java:816)
at javax.swing.SwingUtilities.invokeLater(SwingUtilities.java:1170)
at digilabs.CalFrame.ReportProgress(CalFrame.java:5246)
at digilabs.io.ZipPackage.ZipFile(ZipPackage.java:199)
at digilabs.io.ZipPackage.DoArchive(ZipPackage.java:146)
at digilabs.io.ZipPackage.Archive(ZipPackage.java:122)
at digilabs.spool.JobUploader.CreatePackageSynch(JobUploader.java:969)
at digilabs.spool.JobUploader.DoCreatePackage(JobUploader.java:185)
at digilabs.spool.RemoteJobsSpooler.PrintingDone(RemoteJobsSpooler.java:77)
at digilabs.spool.Spooler.DonePrinting(Spooler.java:241)
at digilabs.spool.Spooler$2.run(Spooler.java:221)
at java.lang.Thread.run(Thread.java:552)
"AWT-AppKit":
at sun.awt.PostEventQueue.postEvent(SunToolkit.java:726)
- waiting to lock <0x4dc891a0> (a sun.awt.PostEventQueue)
at sun.awt.SunToolkit.postEvent(SunToolkit.java:337)
at apple.awt.CToolkit.postEvent(CToolkit.java:1001)
at apple.awt.EventFactoryProxy.forwardEvent(EventFactoryProxy.java:63)
Found 1 deadlock.
----- Original Message -----
From: "Greg Guerin" <email@hidden>
To: <email@hidden>
Sent: Tuesday, January 10, 2006 2:23 PM
Subject: Re: SwingUtilities.invokeLater hang or deadlock
charles chen wrote:
.... I'm getting reproducible hangs & deadlocks calling that very same
function: SwingUtilities.invokeLater(Runnable r).
The runnable is never invoked, and the function never returns. CPU usage
is nil, the application gets tagged as "not responding" and must be force
quit.
Trigger a full thread-dump to the console by sending a QUIT signal:
kill -QUIT pid
where pid is the process-ID of the wedged process. Then look for
deadlocks.
Use 'ps -lax' to find the pid. Or look in Activity Monitor.app. Console
output from a double-clicked Java app appears in the console log of
Console.app. Both utilities are in /Applications/Utilities.
1.8 ghz powerpc g5, patched today.
Which patch did you apply today?
Did SwingUtilities.invokeLater() work before you applied today's patch?
-- GG
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Java-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/java-dev/email@hidden
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Java-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/java-dev/email@hidden