<AWT Dev> [9] Review request for 8166942: Usage of SplashScreen Functions hangs up FX Application

Semyon Sadetsky semyon.sadetsky at oracle.com
Thu Oct 6 07:02:51 UTC 2016


Hi Alexander,

Is it safe to lock the mutex on one thread and unlock it on another?

--Semyon


On 06.10.2016 06:08, Alexander Zvegintsev wrote:
> 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
>



More information about the awt-dev mailing list