Hello,

please review the fix

http://cr.openjdk.java.net/~azvegint/jdk/9/8166942/00/

for the issue

https://bugs.openjdk.java.net/browse/JDK-8166942

SplashEventLoop() acquires the lock[0] and then trying to call SplashRedrawWindow() which is trying execute some code on the main thread[1]. Thus if we call SplashLock() from the main thread between [0] and SplashRedrawWindow() calls then we are in deadlock. Main thread is waiting for mutex release, other thread waiting for finish of code execution on the main thread. It is our case [2].

The proposed solution is to acquire the lock on the main thread.

[0] http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/5518ac2f2ead/src/java.desktop/macosx/native/libsplashscreen/splashscreen_sys.m#l359 [1] http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/5518ac2f2ead/src/java.desktop/macosx/native/libsplashscreen/splashscreen_sys.m#l262 [2] http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/5518ac2f2ead/src/java.desktop/share/native/libsplashscreen/java_awt_SplashScreen.c#l57

--
Thanks,
Alexander.

Reply via email to