Skip to content

Linux AppImage on Arch: WebKitWebProcess still SIGABRT in createAudioSink despite #2176 GST shim #6740

Description

@ClumZeez

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 was meant to fix. The GST shim is present in this AppImage (usr/bin/buzz-desktopbuzz-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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions