Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[Bug] Linux AppImage: bundled libwayland-client.so.0 breaks EGL on newer Mesa hosts - WebProcess aborts (EGL_BAD_PARAMETER), blank window

未关闭
#3,226 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
68/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
linux, rust, tauri

调研方向

Start by locating the Linux AppImage build configuration and its linuxdeploy packaging rules. Exclude libwayland-client.so.0 and the other host-coupled graphics libraries described in the issue, rebuild and test the extracted AppImage on a newer Mesa host, then verify that WebProcess stays alive, the UI renders, and latest.json remains valid for updates.

由索引模型根据 Issue 内容生成。

描述

Summary

On an Arch-based host (EndeavourOS) running Mesa 26.x + libglvnd, the official linux-x86_64 AppImage (v1.0.1) opens but stays blank/white. WebKit's WebProcess aborts during EGL initialization and never comes back:

Could not create default EGL display: EGL_BAD_PARAMETER. Aborting...

The GTK shell window survives, so the user-visible symptom is a permanent blank window rather than a crash.

This appears to be the same AppImage packaging issue documented for another Tauri + WebKitGTK app here: https://github.com/sftwrdotdev/Markpad/issues/498

Environment

  • Host: EndeavourOS (Arch-based), x86_64, VM without usable GPU (VMware 3D acceleration off; software rendering via llvmpipe)
  • Mesa 1:26.2.2, libglvnd 1.7.0, system webkit2gtk-4.1 2.52.6
  • Session: X11 via xrdp/Xvnc (DISPLAY=:10)
  • OpenBitFun v1.0.1 AppImage (OpenBitFun_1.0.1_linux-x86_64.AppImage)

Symptoms / observed behavior

  • stderr right after the banner === OpenBitFun Desktop Starting ===:
    • Could not create default EGL display: EGL_BAD_PARAMETER. Aborting... (pure-Mesa environment)
    • On a system that additionally carries leftover NVIDIA EGL vendor files (/usr/share/glvnd/egl_vendor.d/10_nvidia.json, libnvidia-*.so), the first failure instead surfaces as Could not create surfaceless EGL display: EGL_BAD_ALLOC. Aborting... — same root area, different vendor path.
  • No WebKitWebProcess is ever alive (it dies at startup); only WebKitNetworkProcess survives, so the page never renders.
  • webview.log stays 0 bytes; app.log shows Startup page did not finish loading before the window reveal watchdog.
  • Reproduced both from the FUSE-mounted AppImage and via --appimage-extract-and-run. A strace of the dying WebProcess shows it loading /usr/lib/libEGL.so.1 (glvnd), then aborting right after vendor probing — before any DRI driver is reached.

Root cause analysis

The AppImage bundles usr/lib/libwayland-client.so.0 (built against the ubuntu-24.04 runner). Because LD_LIBRARY_PATH puts the AppImage directories first, that older copy shadows the host's libwayland-client for every process in the AppImage tree, including WebKit's WebProcess. The host libEGL (libglvnd) links libwayland-client, and with the mismatched older copy in place, eglGetPlatformDisplay is rejected at the EGL dispatch entry with EGL_BAD_PARAMETER before any DRI driver is even loaded (Mesa verbose logging prints nothing useful, consistent with a rejection at dispatch entry).

This matches exactly the single-library isolation result reported in Markpad #498 (same stack: Tauri + WebKitGTK 2.52.x AppImage built on ubuntu-24.04, tested on Arch/Mesa 26): removing only libwayland-client.so.0 from the AppDir is necessary and sufficient — the full UI then renders.

Verification performed (on this host)

  1. Extracted the published v1.0.1 AppImage to a directory (--appimage-extract).
  2. Deleted only squashfs-root/usr/lib/libwayland-client.so.0.
  3. Ran the extracted AppRun with WEBKIT_DISABLE_DMABUF_RENDERER=1 on an X11 session.
  4. Result: WebKitWebProcess stays alive, no EGL abort on stderr, webview.log fills up — the frontend completes full startup (Tauri API initialized, Monaco Editor initialized, I18n / config / language registries ready) and no watchdog warning is emitted. UI renders normally.

Note: env workarounds alone (WEBKIT_DISABLE_DMABUF_RENDERER=1, WEBKIT_DISABLE_COMPOSITING_MODE=1, LIBGL_ALWAYS_SOFTWARE=1) do not fix the shipping AppImage — consistent with Markpad #498's findings.

Suggested fix

Exclude host-coupled graphics libraries from the AppImage at build time (linuxdeploy excludelist, per AppImageCommunity/pkg2appimage guidance) — at minimum libwayland-client.so.0, ideally the full set: libwayland-*, plus libEGL/libGL/libgbm/libdrm/libxcb* if present.

Caveat for maintainers: a repacked AppImage must be re-signed and latest.json regenerated, or the auto-updater breaks (same note as in Markpad #498).

Repro caveat

The bug is host-version dependent: it only manifests when the host's Mesa/libwayland are newer than the build runner's. Builds and tests on the ubuntu-24.04 runner (or on hosts matching it) will not catch this; a CI smoke test on a recent Arch/Mesa image would have caught both this and any future recurrence of the same class of packaging problem.

主要语言
Rust
星标
2.3k
派生
236
平均合并
2 小时 53 分钟
30 天内合并 PR
604

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

GCWing/OpenBitFun 的其他 Issue

查看 GCWing/OpenBitFun 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。