JDK-8215364 : JavaFX crashes on Ubuntu 18.04 with Wayland while using Swing-FX interop
  • Type: Bug
  • Component: client-libs
  • Affected Version: 11,12
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: linux_ubuntu
  • Submitted: 2018-12-13
  • Updated: 2019-09-04
  • Resolved: 2018-12-21
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 11 JDK 12 JDK 13 JDK 8 Other
11.0.4Fixed 12 b26Fixed 13Fixed 8u212Fixed openjdk8u212Fixed
Related Reports
Relates :  
JavaFX uses both X11 and gtk code and gtk3 uses Wayland backend while running Ubuntu 18.04 in Wayland mode. This results in crash in JavaFX. This crash is being done under https://bugs.openjdk.java.net/browse/JDK-8210411 by setting the gtk3 backend to x11 on all systems by setting GDK_BACKEND=x11. This fixes the JavaFX crash. 
However, while using the a JFXPanel inside Swing components in Swing-FX interop with GTKLookAndFeel set, the AWT loads the gtk3 first and as the GDK_BACKEND=x11 is not yet set even after the fix for [1], the gtk3 starts using the Wayland backend. Then while initializing the JFXPanel, JavaFX uses the same gtk library loaded by AWT and this results in crash.

The fix is to set the gtk backend to x11 in AWT as well by setting the GDK_BACKEND=x11. This fixes the Swing-FX interop crash as well.

To overcome this issue while using Swing-FX interop, the GDK_BACKEND=x11 needs to be set in AWT also, so that gtk3 will use x11 backend even when loaded from AWT.
Fix Request Backporting this patch keeps 11u in sync with other releases. Patch applies cleanly to 11u.