Details
-
Bug
-
Resolution: Fixed
-
P3
-
8
-
b91
-
os_x
Description
Current synchronization policy used by JLF may lead to a deadlock which is hard or even impossible to effectively resolve on the client side. JFX SwingNode faces it on Mac:
https://javafx-jira.kenai.com/browse/RT-29917
The deadlock is mostly caused by the fact the the paintLock is acquired by JLF during the whole paintComponent execution. The latter in its turn may invoke synchronous native methods. As a result EDT becomes blocked (waiting fot AppKit thread) along with holding the paintLock. At the same time the client (SwingNode in this case) may try to acquire the lock while it blocks AppKit thread. (See the referenced jira issue for more details).
https://javafx-jira.kenai.com/browse/RT-29917
The deadlock is mostly caused by the fact the the paintLock is acquired by JLF during the whole paintComponent execution. The latter in its turn may invoke synchronous native methods. As a result EDT becomes blocked (waiting fot AppKit thread) along with holding the paintLock. At the same time the client (SwingNode in this case) may try to acquire the lock while it blocks AppKit thread. (See the referenced jira issue for more details).