Hello

please review the fix
http://cr.openjdk.java.net/~azvegint/jdk/9/8129116/00/
for the issue
https://bugs.openjdk.java.net/browse/JDK-8129116

This deadlock occurs when we setting a fullscreen window on each graphics device sequentially without a delay.
            EventQueue.invokeAndWait(() -> {
                for (GraphicsDevice device : devices) {
                    device.setFullScreenWindow(new Frame());
                }
            });

It happens even for non-exclusive fullscreen mode too (before the JDK-8051617[0] fix).

Currently we are dispatching events in XToolkit under the awtLock. The fix simply releases this acquired awtLock to avoid deadlock. However we have a couple of issues ([1], [2]) with similar fixes. This repetitive pattern doesn't look good to me, so I created JDK-8129119 [3] to consider releasing awtLock upon dispatchEvent call in XToolkit.

[0] https://bugs.openjdk.java.net/browse/JDK-8051617 Fullscreen mode is not working properly on Xorg [1] https://bugs.openjdk.java.net/browse/JDK-7158311 GraphicsDevice.setDisplayMode(...) leads to hang when DISPLAY variable points to Oracle Linux [2] https://bugs.openjdk.java.net/browse/JDK-7155963 Deadlock in SystemFlavorMap.getFlavorsForNative and SunToolkit.awtLock [3] https://bugs.openjdk.java.net/browse/JDK-8129119 Consider reducing the time while the AWTLock is held

--
Thanks,

Alexander.

Reply via email to