HI Jan,
Jan Burse said:
The tread dump will list all threads, and their waits. You can
directly see deadlocks, eventually starvations, etc..
Here's the thread dump and list: -
[1]in getNum() 3681 caller [TO2] Thread Applet 1 LiveConnect Worker
ThreadThread[Applet 1 LiveConnect Worker
Thread,4,
http://127.0.0.1/-threadGroup] hash c8f6f8
[1]Queueing work
[1]Going for wait
after take
before call
[1]in setBack() 3681 caller CB Thread
FredThread[Fred,4,
http://127.0.0.1/-threadGroup] hash 11f2ee1
[1]After notify
after call
before take
[1]After wait call 3680
[1]in getNum() 3682 caller [TO3] Thread Applet 1 LiveConnect Worker
ThreadThread[Applet 1 LiveConnect Worker
Thread,4,
http://127.0.0.1/-threadGroup] hash c8f6f8
[1]Queueing work
[1]Going for wait
after take
before call
Dump thread stack ...
----------------------------------------------------
2010-12-29 11:39:29
Full thread dump Java HotSpot(TM) Client VM (17.0-b17 mixed mode, sharing):
"Fred" daemon prio=4 tid=0x03564400 nid=0xa90 waiting for monitor entry
[0x041ff000]
java.lang.Thread.State: BLOCKED (on object monitor)
at Sleeper.getNum(Sleeper.java:69)
- waiting to lock <0x25511ab0> (a Sleeper)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
at sun.plugin2.liveconnect.JavaClass$MethodInfo.invoke(Unknown Source)
at sun.plugin2.liveconnect.JavaClass$MemberBundle.invoke(Unknown Source)
at sun.plugin2.liveconnect.JavaClass.invoke0(Unknown Source)
at sun.plugin2.liveconnect.JavaClass.invoke(Unknown Source)
at
sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$DefaultInvocationDelegate.invoke(Unknown
Source)
at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$3.run(Unknown
Source)
at java.security.AccessController.doPrivileged(Native Method)
at
sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo.doObjectOp(Unknown
Source)
at sun.plugin2.main.client.LiveConnectSupport.doObjectOp(Unknown Source)
at sun.plugin2.main.client.MessagePassingJSObject.waitForReply(Unknown
Source)
at sun.plugin2.main.client.MessagePassingJSObject.call(Unknown Source)
at OutThread.run(OutThread.java:39)
"thread applet-Sleeper-1" prio=4 tid=0x03522000 nid=0x168 in Object.wait()
[0x040bf000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x2540d108> (a java.lang.Object)
at java.lang.Object.wait(Object.java:485)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown
Source)
- locked <0x2540d108> (a java.lang.Object)
at java.lang.Thread.run(Unknown Source)
"ConsoleWriterThread" daemon prio=6 tid=0x0351f400 nid=0xa80 in
Object.wait() [0x0406f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at com.sun.deploy.util.ConsoleTraceListener$ConsoleWriterThread.run(Unknown
Source)
- locked <0x2540d110> (a java.lang.Object)
"TimerQueue" daemon prio=6 tid=0x03516000 nid=0xa78 in Object.wait()
[0x03fcf000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x2550cf50> (a javax.swing.TimerQueue)
at javax.swing.TimerQueue.run(Unknown Source)
- locked <0x2550cf50> (a javax.swing.TimerQueue)
at java.lang.Thread.run(Unknown Source)
"Windows Tray Icon Thread" prio=6 tid=0x03515800 nid=0xa50 runnable
[0x03f7f000]
java.lang.Thread.State: RUNNABLE
at com.sun.deploy.ui.WindowsJavaTrayIcon.mainLoop(Native Method)
at com.sun.deploy.ui.WindowsJavaTrayIcon.access$700(Unknown Source)
at com.sun.deploy.ui.WindowsJavaTrayIcon$2.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
"AWT-EventQueue-2" prio=4 tid=0x034d8000 nid=0xa4c in Object.wait()
[0x03f2f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x2540d190> (a java.awt.EventQueue)
at java.lang.Object.wait(Object.java:485)
at java.awt.EventQueue.getNextEvent(Unknown Source)
- locked <0x2540d190> (a java.awt.EventQueue)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
"Applet 1 LiveConnect Worker Thread" prio=4 tid=0x034dec00 nid=0x358 in
Object.wait() [0x03e8f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at Sleeper.getNum(Sleeper.java:84)
- locked <0x25520560> (a java.lang.Object)
- locked <0x25511ab0> (a Sleeper)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
at sun.plugin2.liveconnect.JavaClass$MethodInfo.invoke(Unknown Source)
at sun.plugin2.liveconnect.JavaClass$MemberBundle.invoke(Unknown Source)
at sun.plugin2.liveconnect.JavaClass.invoke0(Unknown Source)
at sun.plugin2.liveconnect.JavaClass.invoke(Unknown Source)
at
sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$DefaultInvocationDelegate.invoke(Unknown
Source)
at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$3.run(Unknown
Source)
at java.security.AccessController.doPrivileged(Native Method)
at
sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo.doObjectOp(Unknown
Source)
at
sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown
Source)
at java.lang.Thread.run(Unknown Source)
"Browser Side Object Cleanup Thread" prio=6 tid=0x034e9400 nid=0xa00 in
Object.wait() [0x03e3f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x2540d2d8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x2540d2d8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at
sun.plugin2.main.client.LiveConnectSupport$BrowserSideObjectCleanupThread.run(Unknown
Source)
"AWT-EventQueue-1" prio=6 tid=0x034c7c00 nid=0x93c runnable [0x03def000]
java.lang.Thread.State: RUNNABLE
at com.sun.deploy.util.ConsoleHelper.dumpAllStacksImpl(Native Method)
at com.sun.deploy.util.ConsoleHelper.dumpAllStacks(Unknown Source)
at sun.plugin2.applet.Plugin2ConsoleController.dumpAllStacks(Unknown
Source)
at com.sun.deploy.util.ConsoleWindow$2.actionPerformed(Unknown Source)
at javax.swing.JComponent$ActionStandin.actionPerformed(Unknown Source)
at javax.swing.SwingUtilities.notifyAction(Unknown Source)
at javax.swing.JComponent.processKeyBinding(Unknown Source)
at javax.swing.KeyboardManager.fireBinding(Unknown Source)
at javax.swing.KeyboardManager.fireKeyboardAction(Unknown Source)
at javax.swing.JComponent.processKeyBindingsForAllComponents(Unknown
Source)
at javax.swing.JComponent.processKeyBindings(Unknown Source)
at javax.swing.JComponent.processKeyEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
"CacheCleanUpThread" daemon prio=6 tid=0x034c5800 nid=0x7b0 in Object.wait()
[0x03d9f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x2540d610> (a com.sun.deploy.cache.CleanupThread)
at java.lang.Object.wait(Object.java:485)
at com.sun.deploy.cache.CleanupThread.run(Unknown Source)
- locked <0x2540d610> (a com.sun.deploy.cache.CleanupThread)
"CacheMemoryCleanUpThread" daemon prio=6 tid=0x034c1c00 nid=0x718 in
Object.wait() [0x03d4f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x2540d708> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at com.sun.deploy.cache.MemoryCache$LoadedResourceCleanupThread.run(Unknown
Source)
"Java Plug-In Heartbeat Thread" prio=6 tid=0x034a6400 nid=0x588 waiting on
condition [0x03caf000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at sun.plugin2.main.client.PluginMain$HeartbeatThread.run(Unknown Source)
"AWT-EventQueue-0" prio=6 tid=0x034a5000 nid=0x7dc in Object.wait()
[0x03c0f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x2540d838> (a java.awt.EventQueue)
at java.lang.Object.wait(Object.java:485)
at java.awt.EventQueue.getNextEvent(Unknown Source)
- locked <0x2540d838> (a java.awt.EventQueue)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at jav
Trace message truncated for length over 10K
Dump thread list ...
Group main,ac=19,agc=2,pri=10
main,5,alive
traceMsgQueueThread,5,alive,daemon
Timer-0,5,alive
Java Plug-In Pipe Worker Thread (Client-Side),5,alive,daemon
AWT-Shutdown,5,alive
AWT-Windows,6,alive,daemon
AWT-EventQueue-0,6,alive
Java Plug-In Heartbeat Thread,5,alive
CacheMemoryCleanUpThread,5,alive,daemon
CacheCleanUpThread,5,alive,daemon
Browser Side Object Cleanup Thread,5,alive
Windows Tray Icon Thread,5,alive
ConsoleWriterThread,5,alive,daemon
Group Plugin Thread Group,ac=2,agc=0,pri=10
AWT-EventQueue-1,6,alive
TimerQueue,5,alive,daemon
Group
http://127.0.0.1/-threadGroup,ac=4,agc=0,pri=4
Applet 1 LiveConnect Worker Thread,4,alive
AWT-EventQueue-2,4,alive
thread applet-Sleeper-1,4,alive
Fred,4,alive,daemon
Done.
Cheers Richard Maher