Summary
The v2.7.1 Linux AppImage still fails to display on hosts whose Mesa is newer than the ubuntu-24.04 build runner. The window opens but stays blank white; the WebKit WebProcess aborts during EGL initialization with:
Could not create default EGL display: EGL_BAD_PARAMETER. Aborting...
This is a second, independent cause behind #182. The WebKitGTK version pin from #463 did land (verified below); a separate packaging problem remains.
This is not the #463 problem (that fix landed)
A dlopen probe of the library inside the published Markpad_2.7.1_amd64.AppImage, calling webkit_get_major/minor/micro_version, reports:
BUNDLED_WEBKITGTK_VERSION = 2.52.3
So #463 worked: the AppImage now bundles a modern WebKitGTK, not the old 2.44.0. The remaining failure is not about the WebKit version.
Root cause
The AppImage bundles usr/lib/libwayland-client.so.0 (the ubuntu-24.04 copy). On a host with a newer libwayland/Mesa, that older bundled copy shadows the host one. The host libEGL (libglvnd, which links libwayland-client) then fails eglGetPlatformDisplay with EGL_BAD_PARAMETER, so WebKit's WebProcess cannot create an EGL display and aborts. The GTK shell window survives, which is why the result is a blank window rather than an immediate exit.
libwayland-client.so.0 is on the standard AppImage excludelist (AppImageCommunity/pkg2appimage) precisely because it is coupled to the host graphics stack and must never be bundled.
Verbose Mesa logging (EGL_LOG_LEVEL=debug, LIBGL_DEBUG=verbose, MESA_DEBUG=1) prints nothing before the abort, which places the rejection at the EGL dispatch entry, before any DRI driver is reached. That is consistent with a libwayland ABI/version mismatch rather than a GPU or driver fault.
Evidence: single-library isolation
Extracted the published AppImage, moved individual libraries out of the AppDir so the host copy is used, then ran the app on the default (forced x11) backend:
| Removed from AppDir |
EGL init |
WebProcess |
Result |
| nothing (as shipped) |
EGL_BAD_PARAMETER |
aborts |
blank window |
only libwayland-client.so.0 |
ok |
alive |
full UI renders |
only libwayland-egl.so.1 |
EGL_BAD_PARAMETER |
aborts |
blank |
only libwayland-server.so.0 |
EGL_BAD_PARAMETER |
aborts |
blank |
libxcb-render.so.0 + libxcb-shm.so.0 |
EGL_BAD_PARAMETER |
aborts |
blank |
Removing only libwayland-client.so.0 is necessary and sufficient. Before/after screenshots (blank white window vs the full "Welcome to Markpad" UI, both v2.7.1) are available and I can attach them.
Also ruled out
- Backend independent: the same abort happens on the default forced
GDK_BACKEND=x11 and on GDK_BACKEND=wayland. WebKit's WebProcess creates its own EGL display regardless of the UI backend.
- Env workarounds do not help:
WEBKIT_DISABLE_DMABUF_RENDERER=1, WEBKIT_DISABLE_COMPOSITING_MODE=1, and LIBGL_ALWAYS_SOFTWARE=1 all still abort.
Test system
Arch Linux, Intel, Mesa 1:26.1.6-1, libglvnd 1.7.0, host webkit2gtk-4.1 2.52.5, Hyprland (Wayland session with XWayland). Tauri 2.10.2.
Fix direction
Stop bundling host-coupled graphics libraries in the AppImage, at minimum libwayland-client.so.0 and ideally the full excludelist set (libwayland-*, libxcb*, libEGL/libGL, libgbm, libdrm). The build is a plain npm run tauri build, and tauri-bundler invokes linuxdeploy plus the gtk plugin, so the exclusion needs to happen in that step or as a post-build strip of the AppDir.
One caveat for whoever writes it: the AppImage is signed (Markpad_2.7.1_amd64.AppImage.sig) and referenced by latest.json, so a post-build repack must re-sign and regenerate the updater metadata, otherwise the auto-updater breaks.
Why #463's verification did not catch this
My #463 check rebuilt on Arch, so linuxdeploy bundled Arch's libwayland-client (matching the host), which cannot reproduce the mismatch. The official build runs on ubuntu-24.04 and bundles the older libwayland-client, which fails against a newer host Mesa. Two independent bugs: the version pin (#463, fixed) and this libwayland bundling.
Summary
The v2.7.1 Linux AppImage still fails to display on hosts whose Mesa is newer than the ubuntu-24.04 build runner. The window opens but stays blank white; the WebKit WebProcess aborts during EGL initialization with:
This is a second, independent cause behind #182. The WebKitGTK version pin from #463 did land (verified below); a separate packaging problem remains.
This is not the #463 problem (that fix landed)
A dlopen probe of the library inside the published
Markpad_2.7.1_amd64.AppImage, callingwebkit_get_major/minor/micro_version, reports:So #463 worked: the AppImage now bundles a modern WebKitGTK, not the old 2.44.0. The remaining failure is not about the WebKit version.
Root cause
The AppImage bundles
usr/lib/libwayland-client.so.0(the ubuntu-24.04 copy). On a host with a newer libwayland/Mesa, that older bundled copy shadows the host one. The hostlibEGL(libglvnd, which links libwayland-client) then failseglGetPlatformDisplaywithEGL_BAD_PARAMETER, so WebKit's WebProcess cannot create an EGL display and aborts. The GTK shell window survives, which is why the result is a blank window rather than an immediate exit.libwayland-client.so.0is on the standard AppImage excludelist (AppImageCommunity/pkg2appimage) precisely because it is coupled to the host graphics stack and must never be bundled.Verbose Mesa logging (
EGL_LOG_LEVEL=debug,LIBGL_DEBUG=verbose,MESA_DEBUG=1) prints nothing before the abort, which places the rejection at the EGL dispatch entry, before any DRI driver is reached. That is consistent with a libwayland ABI/version mismatch rather than a GPU or driver fault.Evidence: single-library isolation
Extracted the published AppImage, moved individual libraries out of the AppDir so the host copy is used, then ran the app on the default (forced x11) backend:
libwayland-client.so.0libwayland-egl.so.1libwayland-server.so.0libxcb-render.so.0+libxcb-shm.so.0Removing only
libwayland-client.so.0is necessary and sufficient. Before/after screenshots (blank white window vs the full "Welcome to Markpad" UI, both v2.7.1) are available and I can attach them.Also ruled out
GDK_BACKEND=x11and onGDK_BACKEND=wayland. WebKit's WebProcess creates its own EGL display regardless of the UI backend.WEBKIT_DISABLE_DMABUF_RENDERER=1,WEBKIT_DISABLE_COMPOSITING_MODE=1, andLIBGL_ALWAYS_SOFTWARE=1all still abort.Test system
Arch Linux, Intel, Mesa
1:26.1.6-1, libglvnd 1.7.0, host webkit2gtk-4.1 2.52.5, Hyprland (Wayland session with XWayland). Tauri 2.10.2.Fix direction
Stop bundling host-coupled graphics libraries in the AppImage, at minimum
libwayland-client.so.0and ideally the full excludelist set (libwayland-*,libxcb*,libEGL/libGL,libgbm,libdrm). The build is a plainnpm run tauri build, and tauri-bundler invokes linuxdeploy plus the gtk plugin, so the exclusion needs to happen in that step or as a post-build strip of the AppDir.One caveat for whoever writes it: the AppImage is signed (
Markpad_2.7.1_amd64.AppImage.sig) and referenced bylatest.json, so a post-build repack must re-sign and regenerate the updater metadata, otherwise the auto-updater breaks.Why #463's verification did not catch this
My #463 check rebuilt on Arch, so linuxdeploy bundled Arch's
libwayland-client(matching the host), which cannot reproduce the mismatch. The official build runs on ubuntu-24.04 and bundles the olderlibwayland-client, which fails against a newer host Mesa. Two independent bugs: the version pin (#463, fixed) and this libwayland bundling.