rt-closed/toys/EmbeddedSwing demo deadlocks (not always) on startup.
Here's the dump of three relevant threads:
"AWT-EventQueue-0" #13 prio=6 os_prio=31 tid=0x00007fd41b119800 nid=0x9b03 runnable [0x000000015e3be000]
java.lang.Thread.State: RUNNABLE
at sun.lwawt.macosx.CInputMethod.getNativeLocale(Native Method)
at sun.lwawt.macosx.LWCToolkit.getDefaultKeyboardLocale(LWCToolkit.java:614)
at sun.awt.im.ExecutableInputMethodManager.getDefaultKeyboardLocale(ExecutableInputMethodManager.java:419)
at sun.awt.im.InputContext.<init>(InputContext.java:131)
at sun.awt.im.InputMethodContext.<init>(InputMethodContext.java:88)
at java.awt.im.InputContext.getInstance(InputContext.java:92)
at java.awt.Window.getInputContext(Window.java:1419)
- locked <0x0000000140cf9578> (a java.lang.Object)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.removeNotify(Component.java:6994)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at java.awt.Container.removeNotify(Container.java:2816)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.removeNotify(JComponent.java:4759)
at java.awt.Container.removeAll(Container.java:1290)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.plaf.basic.BasicTreeUI.paint(BasicTreeUI.java:1238)
at com.apple.laf.AquaTreeUI.paint(AquaTreeUI.java:129)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
at javax.swing.JComponent.paintComponent(JComponent.java:778)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JViewport.paint(JViewport.java:731)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at sun.swing.JLightweightFrame$1.paint(JLightweightFrame.java:131)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
at java.awt.Container.paint(Container.java:1968)
at java.awt.Window.paint(Window.java:3881)
at java.awt.Container.update(Container.java:1988)
at sun.awt.RepaintArea.updateComponent(RepaintArea.java:255)
at sun.lwawt.LWRepaintArea.updateComponent(LWRepaintArea.java:42)
at sun.awt.RepaintArea.paint(RepaintArea.java:232)
at sun.lwawt.LWComponentPeer.handleJavaPaintEvent(LWComponentPeer.java:1334)
at sun.lwawt.LWComponentPeer.handleEvent(LWComponentPeer.java:1220)
at java.awt.Component.dispatchEventImpl(Component.java:4945)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Window.dispatchEventImpl(Window.java:2721)
at java.awt.Component.dispatchEvent(Component.java:4691)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:728)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:687)
at java.awt.EventQueue$3.run(EventQueue.java:685)
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:701)
at java.awt.EventQueue$4.run(EventQueue.java:699)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:698)
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)
"AppKit Thread" #11 prio=5 os_prio=31 tid=0x00007fd41b0bc800 nid=0x707 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"QuantumRenderer-0" #9 daemon prio=5 os_prio=31 tid=0x00007fd41b099800 nid=0x5903 waiting on condition [0x000000015a972000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000001406d6ec0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:868)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1197)
at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:211)
at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:287)
at com.sun.javafx.sg.prism.NGExternalNode.renderContent(NGExternalNode.java:72)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:428)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:69)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1277)
at com.sun.javafx.sg.prism.NGGroup.renderChildren(NGGroup.java:242)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:208)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:1252)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:428)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:69)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1277)
at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:116)
at com.sun.javafx.tk.quantum.AbstractPainter.paintImpl(AbstractPainter.java:211)
at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:98)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
at com.sun.prism.render.RenderJob.run(RenderJob.java:56)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:131)
at java.lang.Thread.run(Thread.java:722)
Here's the dump of three relevant threads:
"AWT-EventQueue-0" #13 prio=6 os_prio=31 tid=0x00007fd41b119800 nid=0x9b03 runnable [0x000000015e3be000]
java.lang.Thread.State: RUNNABLE
at sun.lwawt.macosx.CInputMethod.getNativeLocale(Native Method)
at sun.lwawt.macosx.LWCToolkit.getDefaultKeyboardLocale(LWCToolkit.java:614)
at sun.awt.im.ExecutableInputMethodManager.getDefaultKeyboardLocale(ExecutableInputMethodManager.java:419)
at sun.awt.im.InputContext.<init>(InputContext.java:131)
at sun.awt.im.InputMethodContext.<init>(InputMethodContext.java:88)
at java.awt.im.InputContext.getInstance(InputContext.java:92)
at java.awt.Window.getInputContext(Window.java:1419)
- locked <0x0000000140cf9578> (a java.lang.Object)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.getInputContext(Component.java:6033)
at java.awt.Component.removeNotify(Component.java:6994)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at java.awt.Container.removeNotify(Container.java:2816)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.removeNotify(JComponent.java:4759)
at java.awt.Container.removeAll(Container.java:1290)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.plaf.basic.BasicTreeUI.paint(BasicTreeUI.java:1238)
at com.apple.laf.AquaTreeUI.paint(AquaTreeUI.java:129)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
at javax.swing.JComponent.paintComponent(JComponent.java:778)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JViewport.paint(JViewport.java:731)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at sun.swing.JLightweightFrame$1.paint(JLightweightFrame.java:131)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000001407c8030> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
at java.awt.Container.paint(Container.java:1968)
at java.awt.Window.paint(Window.java:3881)
at java.awt.Container.update(Container.java:1988)
at sun.awt.RepaintArea.updateComponent(RepaintArea.java:255)
at sun.lwawt.LWRepaintArea.updateComponent(LWRepaintArea.java:42)
at sun.awt.RepaintArea.paint(RepaintArea.java:232)
at sun.lwawt.LWComponentPeer.handleJavaPaintEvent(LWComponentPeer.java:1334)
at sun.lwawt.LWComponentPeer.handleEvent(LWComponentPeer.java:1220)
at java.awt.Component.dispatchEventImpl(Component.java:4945)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Window.dispatchEventImpl(Window.java:2721)
at java.awt.Component.dispatchEvent(Component.java:4691)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:728)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:687)
at java.awt.EventQueue$3.run(EventQueue.java:685)
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:701)
at java.awt.EventQueue$4.run(EventQueue.java:699)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:698)
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)
"AppKit Thread" #11 prio=5 os_prio=31 tid=0x00007fd41b0bc800 nid=0x707 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"QuantumRenderer-0" #9 daemon prio=5 os_prio=31 tid=0x00007fd41b099800 nid=0x5903 waiting on condition [0x000000015a972000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000001406d6ec0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:868)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1197)
at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:211)
at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:287)
at com.sun.javafx.sg.prism.NGExternalNode.renderContent(NGExternalNode.java:72)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:428)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:69)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1277)
at com.sun.javafx.sg.prism.NGGroup.renderChildren(NGGroup.java:242)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:208)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:1252)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:428)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:69)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1277)
at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:116)
at com.sun.javafx.tk.quantum.AbstractPainter.paintImpl(AbstractPainter.java:211)
at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:98)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
at com.sun.prism.render.RenderJob.run(RenderJob.java:56)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:131)
at java.lang.Thread.run(Thread.java:722)