flathub / flathub/org.eclipse.Java

Eclipse (Flatpak) crashes with SIGABRT: GTK icon fallback aborts when the glycin SVG loader fails

Aperta
#138 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub
bug
Lingua principale
Nessun dato sulla lingua
Stelle
6
Fork
10
Merge medio
7h 27m
PR unite (30g)
2

Descrizione

The Flatpak build of Eclipse aborts (SIGABRT, core dumped) at random intervals
during normal UI interaction. The abort originates in GTK, not in the JVM:
GTK fails to load an icon, falls back to the Adwaita `image-missing.svg`
placeholder, and loading *that* fails too because the glycin SVG loader
subprocess exits immediately. `ensure_surface_for_gicon()` treats a failed
fallback as unrecoverable and calls `g_assert()`, which aborts the process.

Result: the whole IDE dies without warning, losing unsaved state, and any
server process launched from Eclipse is orphaned (keeps holding its ports).

Because virtually every Eclipse/SWT icon is an SVG, any application run
that hits a missing icon is a coin flip on survival.

## Environment

- Eclipse IDE for Java Developers 2026-06 (4.40)
build: org.eclipse.epp.package.common_4.40.0.20260604-0652
- Installed as Flatpak: org.eclipse.Java
- Equinox launcher: org.eclipse.equinox.launcher_1.7.100.v20251111-0406
- SWT native: libswt-pi3-gtk-4973r12.so (GTK3 / -ws gtk)
- JRE: JustJ OpenJDK HotSpot 21.0.11 (v20260515-1531), bundled
- GTK: libgtk-3.so.0.2420.32
- GLib: libglib-2.0.so.0.8800.3
- glycin: libglycin-2.so.0, loader /usr/libexec/glycin-loaders/2+/glycin-svg
- WebKit2GTK: libwebkit2gtk-4.1.so.0.21.9
JavaScriptCore: libjavascriptcoregtk-4.1.so.0.10.13
- Arch: x86_64

## Frequency

At least three crashes over roughly one week of normal use, with no
reproducible trigger identified. No correlation with a specific action,
view or dialog was observed.

## Actual output (stderr, immediately before the abort)

```
(Eclipse:3): Gtk-WARNING **: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.
**
Gtk:ERROR:../gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed
(error == NULL): Failed to load
/usr/share/icons/Adwaita/scalable/status/image-missing.svg:
Loader process exited early with status '101'
Command: env -i XDG_RUNTIME_DIR="/run/user/" "flatpak-spawn" "--sandbox"
"--watch-bus" "--directory=/" "--forward-fd=" "prlimit" "--as=17012097024"
"/usr/libexec/glycin-loaders/2+/glycin-svg" "--dbus-fd" ""
(gdk-pixbuf-error-quark, 0)
Bail out! Gtk:ERROR:../gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: [...]
```

Note: exit status 101 is the default exit code of a Rust panic, and the glycin
loaders are written in Rust — the loader appears to panic on startup rather
than to fail gracefully.

Also seen earlier in the same session, likely related (broken icon/pixbuf
infrastructure inside the sandbox):

```
Gdk-Message: Unable to load left_ptr_watch from the cursor theme
** (process:): WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
```

## Core dump

Signal 6 (ABRT). Crashing thread, abbreviated — offsets were identical across
all three crashes:

```
#0 libc.so.6 + 0x9c51c (pthread_kill)
#1 libc.so.6 + 0x422be (raise)
#2 libc.so.6 + 0x298ed (abort)
#3 libglib-2.0.so.0 + 0x250b8 (GLib fatal log handler)
#4 libglib-2.0.so.0 + 0x976d2
#5 libgtk-3.so.0 + 0x1eacc9 (icon helper / gtkiconhelper.c)
#6 libgtk-3.so.0 + 0x1eb208
#7 libgtk-3.so.0 + 0x1eb4ca
#8 libgtk-3.so.0 + 0x20043f
... (recursive GTK widget draw/size-allocate)
#35 libswt-pi3-gtk-4973r12.so + 0x541a9 (SWT GTK callback)
#36 libgtk-3.so.0 + 0x393788
#37 libswt-pi3-gtk-4973r12.so + 0x541bf
... (GTK <-> SWT signal callbacks, several levels)
```

The remaining threads are ordinary JVM threads parked in futex waits; nothing
Java-side is involved in the abort.

Symbolication is hampered by missing build-ids in the runtime:

```
Module libwebkit2gtk-4.1.so.0.21.9 without build-id
Module libjavascriptcoregtk-4.1.so.0.10.13 without build-id
Module libglycin-2.so.0 without build-id
```

## Things tried, without effect

- `flatpak update` — runtime already current
- `flatpak repair --user` and `sudo flatpak repair` — no corruption found
- `flatpak override --user --talk-name=org.freedesktop.Flatpak org.eclipse.Java`
(in case the sandboxed `flatpak-spawn` of the loader lacked portal access)

## Workaround / resolution

Uninstalling the Flatpak and installing the plain Eclipse tarball
(eclipse-*-linux-gtk-x86_64.tar.gz, same 2026-06 / 4.40 release) resolves the
problem completely — no crashes since. The native install uses the host's GTK
and image loaders instead of the runtime's glycin stack.

Side effect of the native install: the SWT Browser widget reports
"No more handles because there is no underlying browser available. Please
ensure that WebKit with its GTK 3.x/4.x bindings is installed." until
WebKitGTK 4.1 is installed on the host. This is a separate, non-fatal issue.

## Suggested angle

Two separable problems:

1. The glycin SVG loader in the Flatpak runtime cannot start on this system
(exit 101 / panic). Root cause unknown.
2. GTK's `ensure_surface_for_gicon()` asserts instead of degrading when even
the fallback icon cannot be loaded, turning a cosmetic icon problem into a
hard abort of the host application. Arguably the more serious of the two —
a missing icon should never kill an IDE.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Start at GTK's gtkiconhelper.c entry point ensure_surface_for_gicon() and reproduce the Eclipse Flatpak crash while inspecting the glycin SVG loader's exit-101 startup failure. Compare the Flatpak and native installations, then confirm that the loader issue is understood and a missing fallback icon no longer aborts Eclipse.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java, linux, rust
Ambito
desktop-dev, operating-systems
Tipo di issue
Bug
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Attiva
Chiarezza
Da chiarire
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.