Eclipse plante systématiquement sous Debian (et autres distribution Linux)

Contexte

Ce vendredi, comme régulièrement, je mets à jour mon système avec des corrections liés à des alertes de sécurité.

Cependant, lorsque je démarre Eclipse. Ce dernier se ferme brutalement.

J’obtiens l’erreur suivante dans la console.

(Eclipse:54856): Gdk-CRITICAL **: 09:49:17.679: gdk_window_create_gl_context: assertion 'GDK_IS_WINDOW (window)' failed
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fcf2033b2c8, pid=54856, tid=54857
#
# JRE version: OpenJDK Runtime Environment (17.0.11+9) (build 17.0.11+9-Debian-1deb12u1)
# Java VM: OpenJDK 64-Bit Server VM (17.0.11+9-Debian-1deb12u1, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# C  [libwebkit2gtk-4.0.so.37+0xd3b2c8]
#
# No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /tmp/hs_err_pid54856.log
#
# If you would like to submit a bug report, please visit:
#   https://bugs.debian.org/openjdk-17
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

Scénarios de reproduction

Voici deux scénarios identifiées qui permettent de reduire le problème :

  • Utilisation de l’autocomplétion

  • Ouverture de la boite de dialogue Eclipse Marketplace (Menu Help)

J’ai pu reproduire le problème avec les versions suivantes d’Eclipse : 2023-09 et 2024-03

Cause

Le problème se situe au niveau de la librairie libwebkit2gtk-4.0 qui provoque l’erreur suivante : gdk_window_create_gl_context: assertion 'GDK_IS_WINDOW (window)' failed

Après mes recherches, cela concerne les environnements fonctionnant sous Wayland. C’est pourquoi, certaines solutions préconisent de repasser sous X11 (ce n’est pas une solution viable étant donné que X11 va bientôt disparaitre des distributions)

Solution

La solution est de désactiver l’accélération matériel au niveau de la librairie Webkit2Gtk. Pour ce faire, il est nécessaire de définir la variable d’environnement WEBKIT_DISABLE_DMABUF_RENDERER et de le positionner la valeur 1.

export WEBKIT_DISABLE_DMABUF_RENDERER=1

Dans le détail

La librairie en cause est :

  • /usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so

  • /usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.1.so

Effectivement, cette dernière a été mise à jour lors des patchs de sécurité du 9 mai. La version installée est la version 2.44.1-1~deb12u1. Je n’ai pas compris le lien entre la numérotation du package Debian et celle de la librairie.

De plus, le problème est plus générale et ne concerne pas uniquement Debian.

Effectivement, Nous pouvons retrouver des problèmes équivalent pour ArchLinux, Fedora, Ubuntu.

Spring STS

Pour les personnes qui utilise Spring STS. C’est la même cause, donc la même solution.

Pour le futur

Le correctif est déjà pris en charge au niveau de SWT (librairie graphique utilisée par Eclipse). Il a été inclus le 28 mars 2024. De ce fait, le problème sera traité avec la version 2024-06 d’Eclipse.

Le correctif applique la même solution, c’est à dire de désactiver l’accélération matérielle, mais au niveau du code (Disable WebkitGtk hardware-acceleration pour les curieux)

Pour information, cette solution est celle utilisée par Gnome comme le projet Evolution.