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

Alexander Zvegintsev alexander.zvegintsev at oracle.com
Thu Oct 6 12:12:17 UTC 2016


You are right, it it undefined behavior.


On 10/6/16 10:02 AM, Semyon Sadetsky wrote:
> 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
>>
>

-- 
Thanks,
Alexander.



More information about the awt-dev mailing list