-
Bug
-
Resolution: Cannot Reproduce
-
P4
-
None
-
1.3.1_06
-
sparc
-
solaris_9
Java plug-in falls into deadlock situation when I open ControlPanel.html.
When I opened the ControlPanel.html 100 times, java plug-in felt
into deadlock 8 times. The ControlPanel.html is in the directory
installed JRE.
$JAVA_HOME/ControlPanel.html
Following is my machine environment.
- SunBlade100 ( CPU : 500MHz / Memory : 256MB )
- Solaris 9
- Netscape 4.78
- JRE 1.3.1_06-b01
I tested following procedure.
1) Starting Netscape
/usr/dt/bin/netscape
2) Opening ControlPanel.html
$JAVA_HOME/ControlPanel.html
3) If java plug-in dose not start, picking up thread dump.
/usr/bin/pkill -QUIT java_vm
4) repeat 1)-3)
I picked up 6 thread dumps.
Following is one thread dump in them.
-------------------- thread dump -------------------------------------------
Full thread dump:
"Thread-2" prio=5 tid=0x3f2320 nid=0x10 waiting on monitor [0xf41ff000..0xf41ffc
68]
at java.lang.Thread.sleep(Native Method)
at sun.plugin.navig.motif.Plugin$Watcher.run(Plugin.java:506)
"Thread-1" prio=5 tid=0x3c5f90 nid=0xf waiting on monitor [0xf42ff000..0xf42ffc6
8]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:415)
at com.sun.media.sound.EventDispatcher.dispatchEvents(EventDispatcher.ja
va:139)
at com.sun.media.sound.EventDispatcher.run(EventDispatcher.java:190)
"Thread-0" prio=5 tid=0x3c5da8 nid=0xe waiting on monitor [0xf43ff000..0xf43ffc6
8]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:415)
at com.sun.media.sound.EventDispatcher.dispatchEvents(EventDispatcher.ja
va:139)
at com.sun.media.sound.EventDispatcher.run(EventDispatcher.java:190)
"TimerQueue" daemon prio=5 tid=0x302fa0 nid=0xd waiting on monitor [0xf44ff000..
0xf44ffc68]
at java.lang.Object.wait(Native Method)
at javax.swing.TimerQueue.run(TimerQueue.java:228)
at java.lang.Thread.run(Thread.java:479)
"Main Console Writer" prio=6 tid=0x2c4900 nid=0xc waiting on monitor [0xf45ff000
..0xf45ffc68]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:415)
at sun.plugin.MainConsoleWriter.run(MainConsoleWriter.java:65)
at java.lang.Thread.run(Thread.java:479)
"AWT-Motif" prio=6 tid=0x265778 nid=0xb waiting for monitor entry [0xf46ff000..0
xf46ffc68]
at sun.awt.motif.MToolkit.run(Native Method)
at java.lang.Thread.run(Thread.java:479)
"SunToolkit.PostEventQueue-0" prio=6 tid=0x1b0d80 nid=0xa waiting on monitor [0x
f47ff000..0xf47ffc68]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:415)
at sun.awt.PostEventQueue.run(SunToolkit.java:486)
"AWT-EventQueue-0" prio=6 tid=0x1b0808 nid=0x9 waiting for monitor entry [0xf48f
e000..0xf48ffc68]
at sun.awt.font.NativeFontWrapper.getAdvance(Native Method)
at sun.awt.font.FontDesignMetrics.handleCharWidth(FontDesignMetrics.java
:210)
at sun.awt.font.FontDesignMetrics.charWidth(FontDesignMetrics.java:241)
at javax.swing.text.Utilities.getTabbedTextWidth(Utilities.java:111)
at javax.swing.text.PlainView.getLineWidth(PlainView.java:566)
at javax.swing.text.PlainView.getPreferredSpan(PlainView.java:199)
at javax.swing.plaf.basic.BasicTextUI$RootView.getPreferredSpan(BasicTex
tUI.java:1084)
at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:
685)
at javax.swing.JComponent.getPreferredSize(JComponent.java:985)
at javax.swing.JTextArea.getPreferredSize(JTextArea.java:614)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:74
7)
at java.awt.Container.layout(Container.java:681)
at java.awt.Container.doLayout(Container.java:671)
at java.awt.Container.validateTree(Container.java:745)
at java.awt.Container.validate(Container.java:723)
at sun.plugin.ConsoleWindow.setScrollPosition(ConsoleWindow.java:648)
at sun.plugin.ConsoleWindow$19.run(ConsoleWindow.java:458)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:149)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:332)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:126)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:93)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:88)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:80)
"Signal Dispatcher" daemon prio=10 tid=0xa5f98 nid=0x7 waiting on monitor [0..0]
"Finalizer" daemon prio=8 tid=0xa0c70 nid=0x4 waiting on monitor [0xfb17f000..0x
fb17fc68]
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:103)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:157)
"Reference Handler" daemon prio=10 tid=0xa02b8 nid=0x3 waiting on monitor [0xfb2
7f000..0xfb27fc68]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:415)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:105)
"main" prio=5 tid=0x26280 nid=0x1 waiting for monitor entry [0xffbfa000..0xffbfb
d04]
at java.awt.Window.getGraphicsConfiguration(Window.java:1162)
at sun.awt.motif.MComponentPeer.pInitialize(Native Method)
at sun.awt.motif.MComponentPeer.initialize(MComponentPeer.java:107)
at sun.awt.motif.MComponentPeer.init(MComponentPeer.java:170)
at sun.awt.motif.MWindowPeer.init(MWindowPeer.java:81)
at sun.awt.motif.MFramePeer.<init>(MFramePeer.java:48)
at sun.awt.motif.MEmbeddedFramePeer.<init>(MEmbeddedFramePeer.java:26)
at sun.awt.motif.MToolkit.createEmbeddedFrame(MToolkit.java:200)
at sun.awt.motif.MEmbeddedFrame.<init>(MEmbeddedFrame.java:29)
at sun.plugin.navig.motif.MPluginEmbeddedFrame.<init>(MPluginEmbeddedFra
me.java:33)
at java.lang.reflect.Constructor.newInstance(Native Method)
at sun.plugin.navig.motif.MotifAppletViewer.createFrame(MotifAppletViewe
r.java:275)
at sun.plugin.navig.motif.MotifAppletViewer.setWindow(MotifAppletViewer.
java:380)
at sun.plugin.navig.motif.Plugin.doit(Plugin.java:276)
at sun.plugin.navig.motif.Plugin.start(Plugin.java:90)
"VM Thread" prio=5 tid=0x9f650 nid=0x2 runnable
"VM Periodic Task Thread" prio=10 tid=0xa4da8 nid=0x5 waiting on monitor
"Suspend Checker Thread" prio=10 tid=0xa56a0 nid=0x6 runnable
FOUND A JAVA LEVEL DEADLOCK:
----------------------------
"main":
waiting to lock monitor 0xa3828 (object 0xf57870e8, a java.awt.Component$AWTTr
eeLock),
which is locked by "AWT-EventQueue-0"
"AWT-EventQueue-0":
waiting to lock monitor 0xa36a0 (object 0xf917c8c0, a java.lang.Class),
which is locked by "main"
JAVA STACK INFORMATION FOR THREADS LISTED ABOVE:
------------------------------------------------
Java Stack for "main":
==========
at java.awt.Window.getGraphicsConfiguration(Window.java:1162)
- waiting to lock <f57870e8> (a java.awt.Component$AWTTreeLock)
at sun.awt.motif.MComponentPeer.pInitialize(Native Method)
at sun.awt.motif.MComponentPeer.initialize(MComponentPeer.java:107)
at sun.awt.motif.MComponentPeer.init(MComponentPeer.java:170)
at sun.awt.motif.MWindowPeer.init(MWindowPeer.java:81)
at sun.awt.motif.MFramePeer.<init>(MFramePeer.java:48)
at sun.awt.motif.MEmbeddedFramePeer.<init>(MEmbeddedFramePeer.java:26)
at sun.awt.motif.MToolkit.createEmbeddedFrame(MToolkit.java:200)
at sun.awt.motif.MEmbeddedFrame.<init>(MEmbeddedFrame.java:29)
at sun.plugin.navig.motif.MPluginEmbeddedFrame.<init>(MPluginEmbeddedFra
me.java:33)
at java.lang.reflect.Constructor.newInstance(Native Method)
at sun.plugin.navig.motif.MotifAppletViewer.createFrame(MotifAppletViewe
r.java:275)
at sun.plugin.navig.motif.MotifAppletViewer.setWindow(MotifAppletViewer.
java:380)
at sun.plugin.navig.motif.Plugin.doit(Plugin.java:276)
at sun.plugin.navig.motif.Plugin.start(Plugin.java:90)
Java Stack for "AWT-EventQueue-0":
==========
at sun.awt.font.NativeFontWrapper.getAdvance(Native Method)
- waiting to lock <f917c8c0> (a java.lang.Class)
at sun.awt.font.FontDesignMetrics.handleCharWidth(FontDesignMetrics.java
:210)
at sun.awt.font.FontDesignMetrics.charWidth(FontDesignMetrics.java:241)
at javax.swing.text.Utilities.getTabbedTextWidth(Utilities.java:111)
at javax.swing.text.PlainView.getLineWidth(PlainView.java:566)
at javax.swing.text.PlainView.getPreferredSpan(PlainView.java:199)
at javax.swing.plaf.basic.BasicTextUI$RootView.getPreferredSpan(BasicTex
tUI.java:1084)
at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:
685)
at javax.swing.JComponent.getPreferredSize(JComponent.java:985)
at javax.swing.JTextArea.getPreferredSize(JTextArea.java:614)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:74
7)
at java.awt.Container.layout(Container.java:681)
at java.awt.Container.doLayout(Container.java:671)
at java.awt.Container.validateTree(Container.java:745)
at java.awt.Container.validate(Container.java:723)
- locked <f57870e8> (a java.awt.Component$AWTTreeLock)
at sun.plugin.ConsoleWindow.setScrollPosition(ConsoleWindow.java:648)
at sun.plugin.ConsoleWindow$19.run(ConsoleWindow.java:458)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:149)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:332)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:126)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:93)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:88)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:80)
Found 1 deadlock.
----------- the end of thread dump ------------------------------
When I opened the ControlPanel.html 100 times, java plug-in felt
into deadlock 8 times. The ControlPanel.html is in the directory
installed JRE.
$JAVA_HOME/ControlPanel.html
Following is my machine environment.
- SunBlade100 ( CPU : 500MHz / Memory : 256MB )
- Solaris 9
- Netscape 4.78
- JRE 1.3.1_06-b01
I tested following procedure.
1) Starting Netscape
/usr/dt/bin/netscape
2) Opening ControlPanel.html
$JAVA_HOME/ControlPanel.html
3) If java plug-in dose not start, picking up thread dump.
/usr/bin/pkill -QUIT java_vm
4) repeat 1)-3)
I picked up 6 thread dumps.
Following is one thread dump in them.
-------------------- thread dump -------------------------------------------
Full thread dump:
"Thread-2" prio=5 tid=0x3f2320 nid=0x10 waiting on monitor [0xf41ff000..0xf41ffc
68]
at java.lang.Thread.sleep(Native Method)
at sun.plugin.navig.motif.Plugin$Watcher.run(Plugin.java:506)
"Thread-1" prio=5 tid=0x3c5f90 nid=0xf waiting on monitor [0xf42ff000..0xf42ffc6
8]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:415)
at com.sun.media.sound.EventDispatcher.dispatchEvents(EventDispatcher.ja
va:139)
at com.sun.media.sound.EventDispatcher.run(EventDispatcher.java:190)
"Thread-0" prio=5 tid=0x3c5da8 nid=0xe waiting on monitor [0xf43ff000..0xf43ffc6
8]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:415)
at com.sun.media.sound.EventDispatcher.dispatchEvents(EventDispatcher.ja
va:139)
at com.sun.media.sound.EventDispatcher.run(EventDispatcher.java:190)
"TimerQueue" daemon prio=5 tid=0x302fa0 nid=0xd waiting on monitor [0xf44ff000..
0xf44ffc68]
at java.lang.Object.wait(Native Method)
at javax.swing.TimerQueue.run(TimerQueue.java:228)
at java.lang.Thread.run(Thread.java:479)
"Main Console Writer" prio=6 tid=0x2c4900 nid=0xc waiting on monitor [0xf45ff000
..0xf45ffc68]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:415)
at sun.plugin.MainConsoleWriter.run(MainConsoleWriter.java:65)
at java.lang.Thread.run(Thread.java:479)
"AWT-Motif" prio=6 tid=0x265778 nid=0xb waiting for monitor entry [0xf46ff000..0
xf46ffc68]
at sun.awt.motif.MToolkit.run(Native Method)
at java.lang.Thread.run(Thread.java:479)
"SunToolkit.PostEventQueue-0" prio=6 tid=0x1b0d80 nid=0xa waiting on monitor [0x
f47ff000..0xf47ffc68]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:415)
at sun.awt.PostEventQueue.run(SunToolkit.java:486)
"AWT-EventQueue-0" prio=6 tid=0x1b0808 nid=0x9 waiting for monitor entry [0xf48f
e000..0xf48ffc68]
at sun.awt.font.NativeFontWrapper.getAdvance(Native Method)
at sun.awt.font.FontDesignMetrics.handleCharWidth(FontDesignMetrics.java
:210)
at sun.awt.font.FontDesignMetrics.charWidth(FontDesignMetrics.java:241)
at javax.swing.text.Utilities.getTabbedTextWidth(Utilities.java:111)
at javax.swing.text.PlainView.getLineWidth(PlainView.java:566)
at javax.swing.text.PlainView.getPreferredSpan(PlainView.java:199)
at javax.swing.plaf.basic.BasicTextUI$RootView.getPreferredSpan(BasicTex
tUI.java:1084)
at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:
685)
at javax.swing.JComponent.getPreferredSize(JComponent.java:985)
at javax.swing.JTextArea.getPreferredSize(JTextArea.java:614)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:74
7)
at java.awt.Container.layout(Container.java:681)
at java.awt.Container.doLayout(Container.java:671)
at java.awt.Container.validateTree(Container.java:745)
at java.awt.Container.validate(Container.java:723)
at sun.plugin.ConsoleWindow.setScrollPosition(ConsoleWindow.java:648)
at sun.plugin.ConsoleWindow$19.run(ConsoleWindow.java:458)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:149)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:332)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:126)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:93)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:88)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:80)
"Signal Dispatcher" daemon prio=10 tid=0xa5f98 nid=0x7 waiting on monitor [0..0]
"Finalizer" daemon prio=8 tid=0xa0c70 nid=0x4 waiting on monitor [0xfb17f000..0x
fb17fc68]
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:103)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:157)
"Reference Handler" daemon prio=10 tid=0xa02b8 nid=0x3 waiting on monitor [0xfb2
7f000..0xfb27fc68]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:415)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:105)
"main" prio=5 tid=0x26280 nid=0x1 waiting for monitor entry [0xffbfa000..0xffbfb
d04]
at java.awt.Window.getGraphicsConfiguration(Window.java:1162)
at sun.awt.motif.MComponentPeer.pInitialize(Native Method)
at sun.awt.motif.MComponentPeer.initialize(MComponentPeer.java:107)
at sun.awt.motif.MComponentPeer.init(MComponentPeer.java:170)
at sun.awt.motif.MWindowPeer.init(MWindowPeer.java:81)
at sun.awt.motif.MFramePeer.<init>(MFramePeer.java:48)
at sun.awt.motif.MEmbeddedFramePeer.<init>(MEmbeddedFramePeer.java:26)
at sun.awt.motif.MToolkit.createEmbeddedFrame(MToolkit.java:200)
at sun.awt.motif.MEmbeddedFrame.<init>(MEmbeddedFrame.java:29)
at sun.plugin.navig.motif.MPluginEmbeddedFrame.<init>(MPluginEmbeddedFra
me.java:33)
at java.lang.reflect.Constructor.newInstance(Native Method)
at sun.plugin.navig.motif.MotifAppletViewer.createFrame(MotifAppletViewe
r.java:275)
at sun.plugin.navig.motif.MotifAppletViewer.setWindow(MotifAppletViewer.
java:380)
at sun.plugin.navig.motif.Plugin.doit(Plugin.java:276)
at sun.plugin.navig.motif.Plugin.start(Plugin.java:90)
"VM Thread" prio=5 tid=0x9f650 nid=0x2 runnable
"VM Periodic Task Thread" prio=10 tid=0xa4da8 nid=0x5 waiting on monitor
"Suspend Checker Thread" prio=10 tid=0xa56a0 nid=0x6 runnable
FOUND A JAVA LEVEL DEADLOCK:
----------------------------
"main":
waiting to lock monitor 0xa3828 (object 0xf57870e8, a java.awt.Component$AWTTr
eeLock),
which is locked by "AWT-EventQueue-0"
"AWT-EventQueue-0":
waiting to lock monitor 0xa36a0 (object 0xf917c8c0, a java.lang.Class),
which is locked by "main"
JAVA STACK INFORMATION FOR THREADS LISTED ABOVE:
------------------------------------------------
Java Stack for "main":
==========
at java.awt.Window.getGraphicsConfiguration(Window.java:1162)
- waiting to lock <f57870e8> (a java.awt.Component$AWTTreeLock)
at sun.awt.motif.MComponentPeer.pInitialize(Native Method)
at sun.awt.motif.MComponentPeer.initialize(MComponentPeer.java:107)
at sun.awt.motif.MComponentPeer.init(MComponentPeer.java:170)
at sun.awt.motif.MWindowPeer.init(MWindowPeer.java:81)
at sun.awt.motif.MFramePeer.<init>(MFramePeer.java:48)
at sun.awt.motif.MEmbeddedFramePeer.<init>(MEmbeddedFramePeer.java:26)
at sun.awt.motif.MToolkit.createEmbeddedFrame(MToolkit.java:200)
at sun.awt.motif.MEmbeddedFrame.<init>(MEmbeddedFrame.java:29)
at sun.plugin.navig.motif.MPluginEmbeddedFrame.<init>(MPluginEmbeddedFra
me.java:33)
at java.lang.reflect.Constructor.newInstance(Native Method)
at sun.plugin.navig.motif.MotifAppletViewer.createFrame(MotifAppletViewe
r.java:275)
at sun.plugin.navig.motif.MotifAppletViewer.setWindow(MotifAppletViewer.
java:380)
at sun.plugin.navig.motif.Plugin.doit(Plugin.java:276)
at sun.plugin.navig.motif.Plugin.start(Plugin.java:90)
Java Stack for "AWT-EventQueue-0":
==========
at sun.awt.font.NativeFontWrapper.getAdvance(Native Method)
- waiting to lock <f917c8c0> (a java.lang.Class)
at sun.awt.font.FontDesignMetrics.handleCharWidth(FontDesignMetrics.java
:210)
at sun.awt.font.FontDesignMetrics.charWidth(FontDesignMetrics.java:241)
at javax.swing.text.Utilities.getTabbedTextWidth(Utilities.java:111)
at javax.swing.text.PlainView.getLineWidth(PlainView.java:566)
at javax.swing.text.PlainView.getPreferredSpan(PlainView.java:199)
at javax.swing.plaf.basic.BasicTextUI$RootView.getPreferredSpan(BasicTex
tUI.java:1084)
at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:
685)
at javax.swing.JComponent.getPreferredSize(JComponent.java:985)
at javax.swing.JTextArea.getPreferredSize(JTextArea.java:614)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:74
7)
at java.awt.Container.layout(Container.java:681)
at java.awt.Container.doLayout(Container.java:671)
at java.awt.Container.validateTree(Container.java:745)
at java.awt.Container.validate(Container.java:723)
- locked <f57870e8> (a java.awt.Component$AWTTreeLock)
at sun.plugin.ConsoleWindow.setScrollPosition(ConsoleWindow.java:648)
at sun.plugin.ConsoleWindow$19.run(ConsoleWindow.java:458)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:149)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:332)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:126)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:93)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:88)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:80)
Found 1 deadlock.
----------- the end of thread dump ------------------------------
- relates to
-
JDK-4769766 deadlock between getFontMetrics and getGraphicsConfiguration
-
- Closed
-