fix(linux): schakel Impeller uit om Wayland-crash te voorkomen (#2058) #2059

Merged
brenno merged 3 commits from fix/linux-impeller-crash into main 2026-09-11 21:22:17 +00:00
Owner

Samenvatting

OciDeck segfaults reproduceerbaar op Linux/Wayland (issue #2058): SIGSEGV in gdk_window_end_draw_frame (libgdk-3) met rdi=0x0, in de GTK-tekenpad.

Root cause: Flutter 3.47 zet Impeller op Linux standaard aan. Impeller's EGL-context botst met GTK3's eigen GL-context op Wayland (Flutter #191775, P1): eglMakeCurrent faalt tijdens een redraw en GDK dereferenceert een NULL-pointer. De crash is niet specifiek voor NVIDIA — de melder draait Intel/Mesa op Hyprland.

Fix: fl_dart_project_set_enable_impeller(project, FALSE) in linux/runner/my_application.cc — valt terug op Skia, die geen tweede GL-context opent. Dit is de officieel gedocumenteerde workaround (docs.flutter.dev/perf/impeller).

Poort: tool/check_linux_impeller.dart (onderdeel van STATIC_GATES) verifieert dat de aanroep aanwezig is en FALSE doorgeeft. De crash reproduceert alleen op Linux/Wayland, dus een Dart-test kan hier structureel niets bewijzen — de poort is het kleinste dat faalt als de regel verdwijnt.

Waarom geen Dart-test

De fix is één regel C++ in de Linux-runner. flutter test draait op macOS, compileert de C++-runner niet, en de crash reproduceert alleen op Linux/Wayland. Een poort in tool/ die de aanroep bewaakt is het hoogst haalbare.

Bewaker

Niet van toepassing — de wijziging raakt geen bestandsformaat, opslag, afhankelijkheid, uitgaand verkeer of publieke belofte.

Test plan

  • make check groen (4588+ tests, golden suite, alle statische poorten)
  • make check-linux-impeller groen met de fix, rood zonder
  • CI static-gate groen

Generated with Devin

## Samenvatting OciDeck segfaults reproduceerbaar op Linux/Wayland (issue #2058): SIGSEGV in `gdk_window_end_draw_frame` (libgdk-3) met `rdi=0x0`, in de GTK-tekenpad. **Root cause:** Flutter 3.47 zet Impeller op Linux standaard aan. Impeller's EGL-context botst met GTK3's eigen GL-context op Wayland (Flutter #191775, P1): `eglMakeCurrent` faalt tijdens een redraw en GDK dereferenceert een NULL-pointer. De crash is niet specifiek voor NVIDIA — de melder draait Intel/Mesa op Hyprland. **Fix:** `fl_dart_project_set_enable_impeller(project, FALSE)` in `linux/runner/my_application.cc` — valt terug op Skia, die geen tweede GL-context opent. Dit is de officieel gedocumenteerde workaround ([docs.flutter.dev/perf/impeller](https://docs.flutter.dev/perf/impeller)). **Poort:** `tool/check_linux_impeller.dart` (onderdeel van `STATIC_GATES`) verifieert dat de aanroep aanwezig is en `FALSE` doorgeeft. De crash reproduceert alleen op Linux/Wayland, dus een Dart-test kan hier structureel niets bewijzen — de poort is het kleinste dat faalt als de regel verdwijnt. ### Waarom geen Dart-test De fix is één regel C++ in de Linux-runner. `flutter test` draait op macOS, compileert de C++-runner niet, en de crash reproduceert alleen op Linux/Wayland. Een poort in `tool/` die de aanroep bewaakt is het hoogst haalbare. ### Bewaker Niet van toepassing — de wijziging raakt geen bestandsformaat, opslag, afhankelijkheid, uitgaand verkeer of publieke belofte. #### Test plan - [x] `make check` groen (4588+ tests, golden suite, alle statische poorten) - [x] `make check-linux-impeller` groen met de fix, rood zonder - [ ] CI `static-gate` groen Generated with [Devin](https://devin.ai)
Flutter 3.47 zet Impeller op Linux standaard aan. Impeller's EGL-context
botst met GTK3's eigen GL-context op Wayland (Flutter #191775):
eglMakeCurrent faalt tijdens een redraw en GDK segfaults in
gdk_window_end_draw_frame met rdi=0x0. Skia opent geen tweede
GL-context en heeft het probleem niet.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
De crash reproduceert alleen op Linux/Wayland, dus de Dart-suite vangt
hem niet. check_linux_impeller.dart verifieert dat
fl_dart_project_set_enable_impeller(project, FALSE) in
my_application.cc staat en op FALSE staat. Onderdeel van STATIC_GATES
zodat de regel niet stilletjes verdwijnt.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
docs: changelog-entry voor Linux Wayland-crash fix (#2058)
All checks were successful
scans / scans (pull_request) Successful in 3m34s
web-gate / web-gate (pull_request) Successful in 5m23s
static-gate / static-gate (pull_request) Successful in 6m37s
b017d01892
Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno merged commit 88d37b102a into main 2026-09-11 21:22:17 +00:00
Sign in to join this conversation.
No description provided.