-
Bug
-
Resolution: Fixed
-
P2
-
jfx11, 8
-
b01
-
os_x
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8323863 | jfx22.0.1 | Kevin Rushforth | P2 | Resolved | Fixed | b01 |
JDK-8323833 | jfx22 | Kevin Rushforth | P2 | Resolved | Fixed | b26 |
JDK-8326478 | jfx21.0.3 | Jose Pereda | P2 | Resolved | Fixed | master |
JDK-8326097 | jfx17.0.11 | Johannes Bechberger | P2 | Resolved | Fixed | b01 |
JDK-8324314 | 8u411 | Kevin Rushforth | P2 | Closed | Fixed | b03 |
"AWT-EventQueue-0" prio=0 tid=0x0 nid=0x0 waiting on condition
java.lang.Thread.State: WAITING on java.util.concurrent.FutureTask at 51c6338d
at java.base at 11.0.2/jdk.internal.misc.Unsafe.park(Native Method)
at java.base at 11.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
at java.base at 11.0.2/java.util.concurrent.FutureTask.awaitDone(FutureTask.java:447)
at java.base at 11.0.2/java.util.concurrent.FutureTask.get(FutureTask.java:190)
at platform/javafx.web at 11.0.2/com.sun.javafx.webkit.InputMethodClientImpl.getLocationOffset(InputMethodClientImpl.java:157)
at platform/javafx.graphics at 11.0.2/javafx.scene.Scene$InputMethodRequestsDelegate.getLocationOffset(Scene.java:4140)
at platform/javafx.swing at 11.0.2/javafx.embed.swing.InputMethodSupport$InputMethodRequestsAdapter.getLocationOffset(InputMethodSupport.java:67)
at java.desktop at 11.0.2/sun.awt.im.InputMethodContext.getLocationOffset(InputMethodContext.java:285)
at java.desktop at 11.0.2/sun.lwawt.macosx.CInputMethod$7.run(CInputMethod.java:779)
at java.desktop at 11.0.2/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:303)
at java.desktop at 11.0.2/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
at java.desktop at 11.0.2/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop at 11.0.2/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base at 11.0.2/java.security.AccessController.doPrivileged(Native Method)
at java.base at 11.0.2/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base at 11.0.2/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop at 11.0.2/java.awt.EventQueue$5.run(EventQueue.java:751)
at java.desktop at 11.0.2/java.awt.EventQueue$5.run(EventQueue.java:749)
at java.base at 11.0.2/java.security.AccessController.doPrivileged(Native Method)
at java.base at 11.0.2/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop at 11.0.2/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:723)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:672)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:367)
at java.desktop at 11.0.2/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop at 11.0.2/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop at 11.0.2/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop at 11.0.2/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop at 11.0.2/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop at 11.0.2/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
"JavaFX Application Thread" prio=0 tid=0x0 nid=0x0 runnable
java.lang.Thread.State: RUNNABLE
(in native)
at java.desktop at 11.0.2/sun.lwawt.macosx.LWCToolkit.$$YJP$$doAWTRunLoopImpl(Native
Method)
at java.desktop at 11.0.2/sun.lwawt.macosx.LWCToolkit.doAWTRunLoopImpl(LWCToolkit.java)
at java.desktop at 11.0.2/sun.lwawt.macosx.LWCToolkit.doAWTRunLoop(LWCToolkit.java:1027)
at java.desktop at 11.0.2/sun.lwawt.macosx.LWCToolkit.invokeAndWait(LWCToolkit.java:827)
at java.desktop at 11.0.2/sun.lwawt.macosx.LWCToolkit.invokeAndWait(LWCToolkit.java:780)
at java.desktop at 11.0.2/sun.lwawt.macosx.CInputMethod.characterIndexForPoint(CInputMethod.java:777)
The "characterIndexForPoint" method performs "invokeAndWait"
rom JavaFX thread:
LWCToolkit.invokeAndWait(new Runnable() {
public void run() { synchronized(offsetInfo) {
offsetInfo[0] = fIMContext.getLocationOffset(screenX, screenY);
insertPositionOffset[0] = fIMContext.getInsertPositionOffset();
}}
}, fAwtFocussedComponent);
which is then on EDT delegates back to JavaFX thread and waits for async result.
It seems a regression of the fix:
https://hg.openjdk.java.net/openjfx/11/rt/rev/808d535c4e15
Unfortunately, I don't have a simple reproducer. However, the deadlock is obvious from the code.
- backported by
-
JDK-8323833 Deadlock on macOS in JFXPanel app when handling IME calls
-
- Resolved
-
-
JDK-8323863 Deadlock on macOS in JFXPanel app when handling IME calls
-
- Resolved
-
-
JDK-8326097 Deadlock on macOS in JFXPanel app when handling IME calls
-
- Resolved
-
-
JDK-8326478 Deadlock on macOS in JFXPanel app when handling IME calls
-
- Resolved
-
-
JDK-8324314 Deadlock on macOS in JFXPanel app when handling IME calls
-
- Closed
-
- blocks
-
JDK-8322784 JFXPanel calls InputMethodRequests on wrong thread
-
- Resolved
-
- duplicates
-
JDK-8241709 Freeze with Japanese keyboard layout in JavaFX on Mac OSX
-
- Closed
-
-
JDK-8322087 Deadlock of CInputMethod.getTextLocation and webkit InputMethodClientImpl.getTextLocation with macOS 14 (Sonoma)
-
- Closed
-
-
JDK-8227829 MacOS- AWT-EventQueue thread lock running WebView in JFXPanel
-
- Closed
-
-
JDK-8253547 Swing application stops without any jvm dumps or logs with JFXPanel and WebView
-
- Closed
-
-
JDK-8241709 Freeze with Japanese keyboard layout in JavaFX on Mac OSX
-
- Closed
-
- relates to
-
JDK-8270211 Find a better solution for the undocumented special Java AppKit thread run loop mode.
-
- Open
-
-
JDK-8196011 Intermittent crash when using WebView from JFXPanel application
-
- Resolved
-
-
JDK-8322703 Intermittent crash in WebView in a JFXPanel from IME calls on macOS
-
- Resolved
-
-
JDK-8324237 Typo in comment in GlassApplication.m
-
- Resolved
-
-
JDK-8322784 JFXPanel calls InputMethodRequests on wrong thread
-
- Resolved
-
-
JDK-8322087 Deadlock of CInputMethod.getTextLocation and webkit InputMethodClientImpl.getTextLocation with macOS 14 (Sonoma)
-
- Closed
-
- links to
-
Commit openjdk/jfx17u/4b630c30
-
Commit openjdk/jfx21u/e00407b6
-
Commit openjdk/jfx/0a566990
-
Commit openjdk/jfx/90cbc663
-
Review openjdk/jdk/17184
-
Review openjdk/jfx17u/178
-
Review openjdk/jfx21u/43
-
Review openjdk/jfx/1327
-
Review openjdk/jfx/1334