Linux AppImage on Arch: WebKitWebProcess still SIGABRT in createAudioSink despite #2176 GST shim
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
## Summary
Current Linux AppImage still aborts `WebKitWebProcess` (`SIGABRT` / `SI_TKILL`) about 3 seconds after launch on Arch (Omarchy). The abort is `RELEASE_ASSERT(audioSink)` in `MediaPlayerPrivateGStreamer::createAudioSink()`.
This is the failure [block/buzz#2176](https://github.com/block/buzz/pull/2176) was meant to fix. The GST shim **is present** in this AppImage (`usr/bin/buzz-desktop` → `buzz-desktop.bin`) and still the renderer aborts.
## Environment
- Buzz Linux AppImage, extracted to `~/.local/opt/buzz/squashfs-root` (binaries dated 2026-08-22; desktop `Exec=buzz-desktop`)
- OS: Omarchy 4.0.0 (Arch Linux)
- Session: Hyprland / Wayland
- GPU: NVIDIA GeForce RTX 3060 Ti, driver 610.57.04
- Host GStreamer: 1.28.6 with `gst-plugins-base` / `gst-plugins-good`
- Bundled WebKitGTK 4.1 GNU build-id `2594e661ffa45aa2a47f83c2f2f10caaec9e273f` (same build as Berd 0.6.2)
Not OOM (~8 GiB available). Launch: `gtk-launch Buzz.desktop` at 12:19:30 NZST; abort at 12:19:33 (PID 123026, 2026-08-25).
## Abort site (from the core)
`WTFCrashWithInfo` in:
- file: `Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp`
- function: `GstElement *WebCore::MediaPlayerPrivateGStreamer::createAudioSink()`
- line: 1585
Offsets match exactly: `libwebkit2gtk-4.1.so.0 + 0x7153cf` (`WTFCrashWithInfo`) and `+ 0x335e100` (`createAudioSink`). Crashing thread held the audio-sink role `"video"`.
The core also contains WebKit's `GStreamer element %s not found. Please install it` plus the `autoaudiosink` name.
`usr/lib/gstreamer` and `usr/lib/gstreamer-1.0` still do not exist in the AppImage. `AppRun.wrapped` still injects:
```
GST_PLUGIN_SYSTEM_PATH=%s/usr/lib/gstreamer:%s
GST_PLUGIN_SYSTEM_PATH_1_0=%s/usr/lib/gstreamer-1.0:%s
```
## Why this is not just "me-too" on #2176
#2176 installed a shim that unsets `GST_PLUGIN_*` values pointing into `$APPDIR` after `AppRun.wrapped`. That shim is on disk here and `Buzz.desktop` `Exec=buzz-desktop`, so the launch chain should be `AppRun → AppRun.wrapped → shim → buzz-desktop.bin`.
The web process still died at the same `createAudioSink` assert #2176 described (`autoaudiosink` / media-pipeline init → SIGABRT → blank window).
Possible remaining holes (I cannot tell which from this core alone):
1. The WebKit child does not inherit the cleaned env (or WebKit resets plugin paths).
2. Bundled Ubuntu WebKit still links a GStreamer whose compiled-in default plugin path is `/usr/lib/x86_64-linux-gnu/gstreamer-1.0`, which does not exist on Arch, so unsetting the linuxdeploy override is not enough.
3. `createPlatformAudioSink()` still returns NULL even when host plugins are visible (instantiation failure, not search-path).
## Expected
Launching the AppImage on Arch should not abort the renderer when the UI creates a media player. Missing sink should fail the media element.
## Suggested direction
Confirm whether `WebKitWebProcess` actually sees host `autoaudiosink` after the shim (`GST_DEBUG=2` / `gst-inspect-1.0 autoaudiosink` under the AppImage env vs inside the web process). If the compiled-in default is still Debian multiarch, the shim needs to *set* `GST_PLUGIN_SYSTEM_PATH_1_0` to the host plugin dir (`/usr/lib/gstreamer-1.0` on Arch), not only unset the bundle path.
Berd 0.6.2 has the same WebKit build and **no** shim at all; same abort. Filing that on `block/berd` separately.
## Not this bug
- [block/buzz#2338](https://github.com/block/buzz/issues/2338) DMA-BUF / NVIDIA protocol error
- [block/buzz#6339](https://github.com/block/buzz/issues/6339) Ubuntu `.deb` + system webkit 2.52.3
- [block/buzz#2560](https://github.com/block/buzz/issues/2560) mixed host/bundle plugins on Ubuntu 26.04 (that AppImage *had* 274 plugins)
Contributor guide
Assessment
This issue has not been assessed yet.