Hi Dmitry, I was able to create a demo to reproduce it. It seems that the issue is triggered by Windows#setEnabled(boolean).
Steps to reproduce it with attached WindowTest.java, maybe you need 2-3 attempts: (0. start the demo program) 1. click on the button in the first window ; a second window opens 2. click on the button in the second dialog ; a third windows open 3. move the third window via mouse and click on the label 4. wait 9 seconds ; a fourth windows is opened (the fourth windows should be opened behind the third) 5. try to close the fourth -> EDT is blocked Attached threads_report.txt is a full thread dump after step 5. FYI: I just re-checked the logs, the original integration test was never run on macOS with a older JDK 9. The original integration passes with: - JDK 8 u152 EA on Windows and macOS - JDK 9 b157 EA on Windows ; macOS not tested - JDK 9 b159 EA on Windows ; hangs on macOS as described Thanks Reto > -----Ursprüngliche Nachricht----- > Von: dmitry markov [mailto:[email protected]] > Gesendet: Donnerstag, 9. März 2017 08:52 > An: Reto Merz > Cc: [email protected] > Betreff: Re: <AWT Dev> JDK 9 b159 - > sun.lwawt.macosx.CWrapper$NSWindow.isZoomed never returns > > Hi Reto, > > I have no seen such hang before. Most likely this is a new issue. > Could you provide us with a test case, (i.e. reproducer), please? Once > we have a reproducer, I will open a bug for this. > > Thanks, > Dmitry > On 07/03/2017 19:52, Reto Merz wrote: > > Hi, > > > > We have a integration test which hangs with Java 9 b159 under macOS > > 10.12.3. > > It does not hang with b157 and also works with Windows OS & b159. > > We can reproduce it always with our integration test. > > > > I want to ask if this is already a known regression? > > Otherwise I can try to provide a simple test case to reproduce it but > > this would take some time. > > > > The relevant thread stacks are: > > > > "AWT-EventQueue-0" #13 prio=6 os_prio=31 tid=0x00007fa86ea7e000 > > nid=0xd203 runnable [0x0000700010632000] > > java.lang.Thread.State: RUNNABLE > > at > > sun.lwawt.macosx.CWrapper$NSWindow.isZoomed(java.desktop@9- > ea/Native > > Method) > > at > > sun.lwawt.macosx.CPlatformWindow.isMaximized(java.desktop@9- > ea/CPlatformWindow.java:509) > > at > > sun.lwawt.macosx.CPlatformWindow.setVisible(java.desktop@9- > ea/CPlatformWindow.java:558) > > at > > sun.lwawt.LWWindowPeer.setVisibleImpl(java.desktop@9- > ea/LWWindowPeer.java:253) > > at > > sun.lwawt.LWComponentPeer.setVisible(java.desktop@9- > ea/LWComponentPeer.java:763) > > at java.awt.Component.hide(java.desktop@9-ea/Component.java:1705) > > - locked <0x00000007a48a2c20> (a java.awt.Component$AWTTreeLock) > > at java.awt.Window.hide(java.desktop@9-ea/Window.java:1118) > > at java.awt.Dialog.hide(java.desktop@9-ea/Dialog.java:1152) > > at java.awt.Window.hide(java.desktop@9-ea/Window.java:1110) > > - locked <0x00000007a802e218> (a java.util.Vector) > > at java.awt.Dialog.hide(java.desktop@9-ea/Dialog.java:1152) > > at java.awt.Component.show(java.desktop@9- > ea/Component.java:1670) > > at > > java.awt.Component.setVisible(java.desktop@9- > ea/Component.java:1615) > > at java.awt.Window.setVisible(java.desktop@9-ea/Window.java:1017) > > at java.awt.Dialog.setVisible(java.desktop@9-ea/Dialog.java:1005) > > > > "AppKit Thread" #11 daemon prio=5 os_prio=31 tid=0x00007fa87076b000 > > nid=0x307 waiting for monitor entry [0x00007fff5e87e000] > > java.lang.Thread.State: BLOCKED (on object monitor) > > at > > java.awt.Window.getOwnedWindows_NoClientCode(java.desktop@9- > ea/Window.java:1478) > > - waiting to lock <0x00000007a802e218> (a java.util.Vector) > > at > > java.awt.Window$1.getOwnedWindows(java.desktop@9- > ea/Window.java:4127) > > at > > > sun.lwawt.macosx.CPlatformWindow.orderAboveSiblingsImpl(java.desktop > @9-ea/CPlatformWindow.java:1153) > > at > > > sun.lwawt.macosx.CPlatformWindow.orderAboveSiblings(java.desktop@9- > ea/CPlatformWindow.java:1118) > > at > > > sun.lwawt.macosx.CPlatformWindow.windowDidBecomeMain(java.desktop > @9-ea/CPlatformWindow.java:1182) > > > > Thanks > > Reto > >
"AWT-EventQueue-0@1030" prio=6 tid=0xf nid=NA runnable
java.lang.Thread.State: RUNNABLE
blocks AppKit Thread@973
at sun.lwawt.macosx.CWrapper$NSWindow.isZoomed(CWrapper.java:-1)
at
sun.lwawt.macosx.CPlatformWindow.isMaximized(CPlatformWindow.java:509)
at
sun.lwawt.macosx.CPlatformWindow.setVisible(CPlatformWindow.java:558)
at sun.lwawt.LWWindowPeer.setVisibleImpl(LWWindowPeer.java:253)
at sun.lwawt.LWComponentPeer.setVisible(LWComponentPeer.java:763)
at java.awt.Component.hide(Component.java:1705)
- locked <0x848> (a java.awt.Component$AWTTreeLock)
at java.awt.Window.hide(Window.java:1118)
at java.awt.Dialog.hide(Dialog.java:1152)
at java.awt.Window.hide(Window.java:1110)
- locked <0x849> (a java.util.Vector)
at java.awt.Dialog.hide(Dialog.java:1152)
at java.awt.Component.show(Component.java:1670)
at java.awt.Component.setVisible(Component.java:1615)
at java.awt.Window.setVisible(Window.java:1017)
at java.awt.Dialog.setVisible(Dialog.java:1005)
at WindowTest$MyDialog.setVisible(WindowTest.java:109)
at WindowTest$1$1$1$1.actionPerformed(WindowTest.java:41)
at javax.swing.Timer.fireActionPerformed(Timer.java:317)
at javax.swing.Timer$DoPostEvent.run(Timer.java:249)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:759)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:712)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at
java.security.AccessController.doPrivileged(AccessController.java:-1)
at
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:88)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:729)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:199)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
at
java.security.AccessController.doPrivileged(AccessController.java:-1)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
at java.awt.Dialog.show(Dialog.java:1070)
at java.awt.Component.show(Component.java:1668)
at java.awt.Component.setVisible(Component.java:1615)
at java.awt.Window.setVisible(Window.java:1017)
at java.awt.Dialog.setVisible(Dialog.java:1005)
at WindowTest$MyDialog.setVisible(WindowTest.java:109)
at WindowTest$1$1$1.actionPerformed(WindowTest.java:61)
at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
at
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:269)
at java.awt.Component.processMouseEvent(Component.java:6577)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3343)
at java.awt.Component.processEvent(Component.java:6342)
at java.awt.Container.processEvent(Container.java:2259)
at java.awt.Component.dispatchEventImpl(Component.java:4960)
at java.awt.Container.dispatchEventImpl(Container.java:2317)
at java.awt.Component.dispatchEvent(Component.java:4792)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4474)
at java.awt.Container.dispatchEventImpl(Container.java:2303)
at java.awt.Window.dispatchEventImpl(Window.java:2758)
at java.awt.Component.dispatchEvent(Component.java:4792)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:761)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:712)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at
java.security.AccessController.doPrivileged(AccessController.java:-1)
at
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:88)
at
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
at java.awt.EventQueue$4.run(EventQueue.java:734)
at java.awt.EventQueue$4.run(EventQueue.java:732)
at
java.security.AccessController.doPrivileged(AccessController.java:-1)
at
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:88)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:731)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:199)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
at
java.security.AccessController.doPrivileged(AccessController.java:-1)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
at java.awt.Dialog.show(Dialog.java:1070)
at java.awt.Component.show(Component.java:1668)
at java.awt.Component.setVisible(Component.java:1615)
at java.awt.Window.setVisible(Window.java:1017)
at java.awt.Dialog.setVisible(Dialog.java:1005)
at WindowTest$MyDialog.setVisible(WindowTest.java:109)
at WindowTest$1$1.actionPerformed(WindowTest.java:70)
at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
at
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:269)
at java.awt.Component.processMouseEvent(Component.java:6577)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3343)
at java.awt.Component.processEvent(Component.java:6342)
at java.awt.Container.processEvent(Container.java:2259)
at java.awt.Component.dispatchEventImpl(Component.java:4960)
at java.awt.Container.dispatchEventImpl(Container.java:2317)
at java.awt.Component.dispatchEvent(Component.java:4792)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4474)
at java.awt.Container.dispatchEventImpl(Container.java:2303)
at java.awt.Window.dispatchEventImpl(Window.java:2758)
at java.awt.Component.dispatchEvent(Component.java:4792)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:761)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:712)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at
java.security.AccessController.doPrivileged(AccessController.java:-1)
at
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:88)
at
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
at java.awt.EventQueue$4.run(EventQueue.java:734)
at java.awt.EventQueue$4.run(EventQueue.java:732)
at
java.security.AccessController.doPrivileged(AccessController.java:-1)
at
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:88)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:731)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:199)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
"TimerQueue@2103" daemon prio=5 tid=0x13 nid=NA waiting
java.lang.Thread.State: WAITING
at jdk.internal.misc.Unsafe.park(Unsafe.java:-1)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:192)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2062)
at java.util.concurrent.DelayQueue.take(DelayQueue.java:217)
at javax.swing.TimerQueue.run(TimerQueue.java:171)
at java.lang.Thread.run(Thread.java:844)
"AppKit Thread@973" daemon prio=5 tid=0xd nid=NA waiting for monitor entry
java.lang.Thread.State: BLOCKED
waiting for AWT-EventQueue-0@1030 to release lock on <0x849> (a
java.util.Vector)
at java.awt.Window.getOwnedWindows_NoClientCode(Window.java:1484)
at java.awt.Window$1.getOwnedWindows(Window.java:4127)
at
sun.lwawt.macosx.CPlatformWindow.orderAboveSiblingsImpl(CPlatformWindow.java:1153)
at
sun.lwawt.macosx.CPlatformWindow.orderAboveSiblings(CPlatformWindow.java:1118)
at
sun.lwawt.macosx.CPlatformWindow.windowDidBecomeMain(CPlatformWindow.java:1182)
"Common-Cleaner@2114" daemon prio=8 tid=0x8 nid=NA waiting
java.lang.Thread.State: WAITING
at java.lang.Object.wait(Object.java:-1)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
at jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:148)
at java.lang.Thread.run(Thread.java:844)
at jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:122)
"Java2D Queue Flusher@1110" daemon prio=10 tid=0x10 nid=NA waiting
java.lang.Thread.State: WAITING
at java.lang.Object.wait(Object.java:-1)
at
sun.java2d.opengl.OGLRenderQueue$QueueFlusher.run(OGLRenderQueue.java:205)
at java.lang.Thread.run(Thread.java:844)
"Java2D Disposer@1318" daemon prio=10 tid=0x12 nid=NA waiting
java.lang.Thread.State: WAITING
at java.lang.Object.wait(Object.java:-1)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:172)
at sun.java2d.Disposer.run(Disposer.java:144)
at java.lang.Thread.run(Thread.java:844)
"AWT-Shutdown@977" prio=5 tid=0xe nid=NA waiting
java.lang.Thread.State: WAITING
at java.lang.Object.wait(Object.java:-1)
at java.lang.Object.wait(Object.java:516)
at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:291)
at java.lang.Thread.run(Thread.java:844)
"Finalizer@2116" daemon prio=8 tid=0x3 nid=NA waiting
java.lang.Thread.State: WAITING
at java.lang.Object.wait(Object.java:-1)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:172)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:216)
"Reference Handler@2117" daemon prio=10 tid=0x2 nid=NA runnable
java.lang.Thread.State: RUNNABLE
at
java.lang.ref.Reference.waitForReferencePendingList(Reference.java:-1)
at
java.lang.ref.Reference.processPendingReferences(Reference.java:163)
at java.lang.ref.Reference.access$000(Reference.java:44)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:138)
"DestroyJavaVM@1113" prio=5 tid=0x11 nid=NA runnable
java.lang.Thread.State: RUNNABLE
"Signal Dispatcher@2115" daemon prio=9 tid=0x4 nid=NA runnable
java.lang.Thread.State: RUNNABLE
WindowTest.java
Description: Binary data
