Skip to content

Shell segfaults in libwebkitgtk-6.0 when opening any title since web v5.0.0-beta.40 #140

Description

@Davis-pies

Describe the bug
Since web.stremio.com was updated to v5.0.0-beta.40 (2026-09-23), clicking any title (catalog poster → details) crashes the shell immediately with SIGSEGV. Pointing the same shell at a locally served v5.0.0-beta.39 build (--url http://127.0.0.1:18080) works normally, so the trigger is in the beta.39 → beta.40 web changes.

It reproduces on both the native package and the Flatpak, which ship different WebKitGTK builds, so it doesn't look like a regression in one WebKit version.

To reproduce

  1. Launch Stremio (default web UI, beta.40)
  2. Click any title in Board/Discover
  3. The shell crashes

Environment

  • Arch Linux, kernel 7.2.6, Wayland, NVIDIA RTX 4070 (driver 610.57.04)
  • stremio-linux-shell 1.2.0 (AUR, webkitgtk-6.0 2.52.6) — crashes
  • com.stremio.Stremio Flatpak 1.0.0-beta.16 (GNOME 50 runtime, WebKitGTK 2.52.5) — crashes identically
  • WEBKIT_DISABLE_DMABUF_RENDERER=1 set; WEBKIT_DISABLE_COMPOSITING_MODE=1 makes no difference

Crash
UI process (not the web process), null-pointer read at offset 0x48, same instruction every time:

stremio[2885]: segfault at 48 ip 00007f821b088d5e ... error 4 in libwebkitgtk-6.0.so.4.16.10[1c87d5e,...]
stremio[4653]: segfault at 48 ip 00007f5f1a3c3c82 ... error 4 in libwebkitgtk-6.0.so.4.16.9[fc3c82,...]   (Flatpak)

On the first occurrence the web process also died: WebKitWebProces: trap invalid opcode ... libwebkitgtk-6.0.so.4.16.10[505a339,...].

Possibly relevant beta.40 changes (unverified): "fix: preserve meta item route transitions", "Scale the whole interface across web and shells".

Workaround
Serve the beta.39 release zip locally and launch with --url:

python3 -m http.server 18080 --bind 127.0.0.1 -d stremio-web-beta39/build &
/usr/bin/stremio --url http://127.0.0.1:18080

Activity

OmarMujahid commented on Oct 3, 2026

@OmarMujahid

Same crash here on the Flatpak (1.2.1, Pop!_OS / COSMIC Wayland, RTX 4060 + AMD iGPU). Same offset: segfault at 48 ... libwebkitgtk-6.0.so.4.16.9[fc3c82,...] — triggered by opening/installing an add-on or opening a title.

Edit: the plain beta.39 workaround has a catch — playback starts (audio, subtitles and timer work) but the player keeps showing the background art over the video. beta.39's ShellVideo only sets loaded (and makes the page transparent) on mpv-event-video-ready, which the Linux shell never sends. beta.40 added a fallback for shells without that event, which is why it works there. Step 2 below patches beta.39 to mark the video loaded once time-pos moves. #168 adds that event to the Linux shell; once it's merged, step 2 isn't needed.

Full workaround for the Flatpak, persists across reboots and keeps the app launcher working:

# 1. Get the beta.39 web UI
mkdir -p ~/.local/share/stremio-web-beta39 && cd ~/.local/share/stremio-web-beta39
curl -sSLO https://github.com/Stremio/stremio-web/releases/download/v5.0.0-beta.39/stremio-web.zip
unzip -q stremio-web.zip && rm stremio-web.zip

# 2. Patch it so the background hides once playback time moves
python3 - <<'EOF'
import glob
p = glob.glob('build/*/scripts/main.js')[0]
s = open(p).read()
old = 'case"time-pos":case"sub-delay":s[e.name]=Math.round(1e3*e.data);break;'
new = 'case"time-pos":case"sub-delay":s[e.name]=Math.round(1e3*e.data);"time-pos"===e.name&&e.data>0&&!s.loaded&&(s.loaded=!0,N(!1),C("loaded"));break;'
assert s.count(old) == 1
open(p, 'w').write(s.replace(old, new))
print('patched', p)
EOF

# 3. Serve it locally as a user service (starts on login)
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/stremio-web-beta39.service <<'EOF'
[Unit]
Description=Local Stremio web UI beta.39 (workaround for #140)

[Service]
ExecStart=/usr/bin/python3 -m http.server 18080 --bind 127.0.0.1 -d %h/.local/share/stremio-web-beta39/build
Restart=on-failure

[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload && systemctl --user enable --now stremio-web-beta39.service

# 4. Make the desktop launcher use it
mkdir -p ~/.local/share/applications
sed 's#--command=stremio --file-forwarding com.stremio.Stremio @@u %u @@#--command=stremio com.stremio.Stremio --url http://127.0.0.1:18080 %u#' \
  ~/.local/share/flatpak/exports/share/applications/com.stremio.Stremio.desktop \
  > ~/.local/share/applications/com.stremio.Stremio.desktop

(For a system-wide Flatpak install, the source .desktop is in /var/lib/flatpak/exports/share/applications/ instead.)

Terminal launch: flatpak run com.stremio.Stremio --url http://127.0.0.1:18080

If you already loaded the unpatched beta.39, clear WebKit's cache so the patched file is picked up: rm -rf ~/.var/app/com.stremio.Stremio/cache/stremio/WebKitCache

Undo once this is fixed:

systemctl --user disable --now stremio-web-beta39.service
rm ~/.local/share/applications/com.stremio.Stremio.desktop

Side note on NVIDIA/Wayland: if the window is black or animations freeze, flatpak override --user --env=GSK_RENDERER=gl com.stremio.Stremio fixed both for me (same idea as #158). With that set I no longer needed WEBKIT_DISABLE_DMABUF_RENDERER=1.

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