-
Bug
-
Resolution: Fixed
-
P2
-
1.4.0
-
None
-
beta2
-
sparc
-
solaris_2.6
SwingApplet demo hangs on Solaris with Merlin beta_refresh-b66.
Steps to reproduce:
1. Run SwingApplet.html
2. Select Quit from applet's menu
3. Applet will hang
Below is the stack trace.
It can be seen that AWT-EventQueue-1 took InputMethodContext lock and is trying to get AWTTreeLock while applet-SwingApplet took AWTTreeLock and is trying to get InputMethodContextLock.
It seems inappropriate for InputMethodContext to create AWT window while keeping InputMethodContext because AWT doesn't require it. In opposite, both AWTTreeLock grabs look reasonable. From quick look into the IM code it looks like they took lock for the whole method while it is required only to protect if statement (InputMethodContext.getCompositionAreaHandler).
File the bug against IM for further investigation.
"AWT-EventQueue-1" prio=4 tid=0x17dec0 nid=0x15 waiting for monitor entry [e4b00000..e4b01a38]
at java.awt.Component.reshape(Component.java:1639)
- waiting to lock <e5e14158> (a java.awt.Component$AWTTreeLock)
at java.awt.Component.setBounds(Component.java:1630)
at java.awt.Component.move(Component.java:1507)
at java.awt.Component.setLocation(Component.java:1499)
at java.awt.Window.init(Window.java:227)
at java.awt.Window.<init>(Window.java:253)
at java.awt.Frame.<init>(Frame.java:401)
at sun.awt.im.SimpleInputMethodWindow.<init>(SimpleInputMethodWindow.java:32)
at sun.awt.SunToolkit.createInputMethodWindow(SunToolkit.java:504)
at sun.awt.im.InputMethodContext.createInputMethodWindow(InputMethodContext.java:300)
at sun.awt.im.CompositionArea.<init>(CompositionArea.java:57)
at sun.awt.im.CompositionAreaHandler.<init>(CompositionAreaHandler.java:53)
- locked <e9fc0128> (a java.lang.Class)
at sun.awt.im.InputMethodContext.getCompositionAreaHandler(InputMethodContext.java:193)
- locked <e5cd2300> (a sun.awt.im.InputMethodContext)
at sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:176)
at java.awt.Component.dispatchEventImpl(Component.java:3442)
at java.awt.Container.dispatchEventImpl(Container.java:1440)
at java.awt.Component.dispatchEvent(Component.java:3353)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:439)
at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:131)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)
"thread applet-SwingApplet" prio=4 tid=0x160650 nid=0xf waiting for monitor entry [e5001000..e5001a38]
at sun.awt.im.InputContext.removeNotify(InputContext.java:546)
- waiting to lock <e5cd2300> (a sun.awt.im.InputMethodContext)
at java.awt.Component.removeNotify(Component.java:5385)
- locked <e5e14158> (a java.awt.Component$AWTTreeLock)
at java.awt.Container.removeNotify(Container.java:1886)
- locked <e5e14158> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.removeNotify(JComponent.java:4224)
at javax.swing.JButton.removeNotify(JButton.java:211)
at java.awt.Container.remove(Container.java:534)
- locked <e5e14158> (a java.awt.Component$AWTTreeLock)
at java.awt.Container.remove(Container.java:587)
- locked <e5e14158> (a java.awt.Component$AWTTreeLock)
at SwingApplet.stop(SwingApplet.java:66)
at sun.applet.AppletPanel.run(AppletPanel.java:377)
at java.lang.Thread.run(Thread.java:579)
Steps to reproduce:
1. Run SwingApplet.html
2. Select Quit from applet's menu
3. Applet will hang
Below is the stack trace.
It can be seen that AWT-EventQueue-1 took InputMethodContext lock and is trying to get AWTTreeLock while applet-SwingApplet took AWTTreeLock and is trying to get InputMethodContextLock.
It seems inappropriate for InputMethodContext to create AWT window while keeping InputMethodContext because AWT doesn't require it. In opposite, both AWTTreeLock grabs look reasonable. From quick look into the IM code it looks like they took lock for the whole method while it is required only to protect if statement (InputMethodContext.getCompositionAreaHandler).
File the bug against IM for further investigation.
"AWT-EventQueue-1" prio=4 tid=0x17dec0 nid=0x15 waiting for monitor entry [e4b00000..e4b01a38]
at java.awt.Component.reshape(Component.java:1639)
- waiting to lock <e5e14158> (a java.awt.Component$AWTTreeLock)
at java.awt.Component.setBounds(Component.java:1630)
at java.awt.Component.move(Component.java:1507)
at java.awt.Component.setLocation(Component.java:1499)
at java.awt.Window.init(Window.java:227)
at java.awt.Window.<init>(Window.java:253)
at java.awt.Frame.<init>(Frame.java:401)
at sun.awt.im.SimpleInputMethodWindow.<init>(SimpleInputMethodWindow.java:32)
at sun.awt.SunToolkit.createInputMethodWindow(SunToolkit.java:504)
at sun.awt.im.InputMethodContext.createInputMethodWindow(InputMethodContext.java:300)
at sun.awt.im.CompositionArea.<init>(CompositionArea.java:57)
at sun.awt.im.CompositionAreaHandler.<init>(CompositionAreaHandler.java:53)
- locked <e9fc0128> (a java.lang.Class)
at sun.awt.im.InputMethodContext.getCompositionAreaHandler(InputMethodContext.java:193)
- locked <e5cd2300> (a sun.awt.im.InputMethodContext)
at sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:176)
at java.awt.Component.dispatchEventImpl(Component.java:3442)
at java.awt.Container.dispatchEventImpl(Container.java:1440)
at java.awt.Component.dispatchEvent(Component.java:3353)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:439)
at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:131)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)
"thread applet-SwingApplet" prio=4 tid=0x160650 nid=0xf waiting for monitor entry [e5001000..e5001a38]
at sun.awt.im.InputContext.removeNotify(InputContext.java:546)
- waiting to lock <e5cd2300> (a sun.awt.im.InputMethodContext)
at java.awt.Component.removeNotify(Component.java:5385)
- locked <e5e14158> (a java.awt.Component$AWTTreeLock)
at java.awt.Container.removeNotify(Container.java:1886)
- locked <e5e14158> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.removeNotify(JComponent.java:4224)
at javax.swing.JButton.removeNotify(JButton.java:211)
at java.awt.Container.remove(Container.java:534)
- locked <e5e14158> (a java.awt.Component$AWTTreeLock)
at java.awt.Container.remove(Container.java:587)
- locked <e5e14158> (a java.awt.Component$AWTTreeLock)
at SwingApplet.stop(SwingApplet.java:66)
at sun.applet.AppletPanel.run(AppletPanel.java:377)
at java.lang.Thread.run(Thread.java:579)
- relates to
-
JDK-4472331 Solaris installer wizard (java 1.4 beta_refresh-b67) hangs
-
- Resolved
-