Skip to content

fix(linux): exclude bundled NSS libs so AppImage launches on Arch / rolling distros#2032

Merged
senamakel merged 1 commit into
tinyhumansai:mainfrom
senamakel:issue/2001-bug-appimage-launch-failure-on-arch-linu
May 18, 2026
Merged

fix(linux): exclude bundled NSS libs so AppImage launches on Arch / rolling distros#2032
senamakel merged 1 commit into
tinyhumansai:mainfrom
senamakel:issue/2001-bug-appimage-launch-failure-on-arch-linu

Conversation

@senamakel
Copy link
Copy Markdown
Member

@senamakel senamakel commented May 18, 2026

Summary

Submodule bump for app/src-tauri/vendor/tauri-cef to pick up tinyhumansai/tauri-cef#15, which extends the AppImage bundler's exclude list (introduced in #1996 for glibc) to also drop the bundled NSS/NSPR family.

Fixes #2001 ([Bug] AppImage launch failure on Arch Linux/Hyprland: NSS version mismatch ...).

Why

Chromium/CEF inside the AppImage dlopen()s the host's /usr/lib/libsoftokn3.so for PKCS#11. On rolling distros the host's libsoftokn3 requires symbols only present in newer NSS (e.g. NSSUTIL_3.108), but LD_LIBRARY_PATH resolves libnssutil3 from the older bundled \$APPDIR/shared/lib first — the loader aborts the process before any window appears:

.../shared/lib/libnssutil3.so: version `NSSUTIL_3.108' not found
   (required by /usr/lib/libsoftokn3.so)
[FATAL:crypto/nss_util.cc:146] nss_error=-5925

The downstream X11 BadWindow / GPU errors in the bug report are symptoms of this fatal crypto-init crash — the process never reaches a coherent state, so window setup fails next.

Verification (reproduced in archlinux:latest Docker)

Library Bundled in v0.53.43 AppImage Host (Arch today) Required by host libsoftokn3.so
libnssutil3.so defines up to NSSUTIL_3.94 NSSUTIL_3.117 NSSUTIL_3.108

Direct dlopen(\"/usr/lib/libsoftokn3.so\") succeeds on a clean Arch container but fails the moment the AppImage's shared/lib is prepended to LD_LIBRARY_PATH — exactly matching the reporter's traceback.

Change

This PR contains a single submodule bump:

-Subproject commit f9213d5a6f338004d5e599ac49b8ca87336c5e1c
+Subproject commit e22ec719034fdac3994c42a3c040fafa10672219

All code lives in tinyhumansai/tauri-cef#15.

Test plan

  • cargo check -p tauri-bundler passes against the new submodule revision locally
  • CI Linux build produces an AppImage with no libnss*/libnssutil*/libsoftokn3*/libfreebl*/libnspr4*/libplc4*/libplds4*/libssl3*/libsmime3* under \$APPDIR/shared/lib
  • Run the resulting AppImage in archlinux:latest: chromium crypto init must not abort with NSSUTIL_3.108 not found
  • Smoke-test the AppImage on Ubuntu 22.04 / 24.04 to confirm host NSS is found and the app launches normally
  • Manual launch on Arch + Hyprland to confirm the reporter's environment now boots past the crypto stage (the X11 BadWindow / GPU items in [Bug] AppImage launch failure on Arch Linux/Hyprland: NSS version mismatch and X11 BadWindow errors #2001 are separate display-side concerns — see issue follow-ups)

Refs tinyhumansai/tauri-cef#15
Refs #1996 (glibc-family precedent)

Summary by CodeRabbit

  • Chores
    • Updated vendored dependencies.

Review Change Stack

Picks up tinyhumansai/tauri-cef#15, which extends the AppImage bundler's
exclude list (added in tinyhumansai#1996 for glibc) to also drop libnss*/libnssutil*/
libsmime3/libssl3/libsoftokn3/libfreebl*/libnspr4/libplc4/libplds4 from
$APPDIR/shared/lib at package time.

Without this, Chromium/CEF dlopens the host's /usr/lib/libsoftokn3.so
for PKCS#11, but the loader resolves NSSUTIL_* against the older bundled
libnssutil3.so first and aborts the process before any window is shown:

    .../shared/lib/libnssutil3.so: version `NSSUTIL_3.108' not found
       (required by /usr/lib/libsoftokn3.so)
    [FATAL:crypto/nss_util.cc:146] nss_error=-5925

Reproduced inside archlinux:latest: bundled libnssutil3 defines up to
NSSUTIL_3.94, host requires NSSUTIL_3.108.

Fixes tinyhumansai#2001 (AppImage launch crash on Arch / rolling distros).
@senamakel senamakel requested a review from a team May 18, 2026 02:28
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 18, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ce36abc6-6131-4669-9b01-ee4ce3de7d1b

📥 Commits

Reviewing files that changed from the base of the PR and between c99d1eb and 0aba686.

📒 Files selected for processing (1)
  • app/src-tauri/vendor/tauri-cef

📝 Walkthrough

Walkthrough

This PR updates the vendored tauri-cef submodule to a newer commit, advancing the CEF (Chromium Embedded Framework) dependency within the Tauri application framework.

Changes

CEF Vendored Submodule Update

Layer / File(s) Summary
Tauri CEF submodule version update
app/src-tauri/vendor/tauri-cef
The vendored tauri-cef submodule commit reference is advanced from f9213d5a to e22ec719 to incorporate upstream CEF improvements.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Possibly related PRs

  • tinyhumansai/openhuman#1996: Updates the same app/src-tauri/vendor/tauri-cef submodule pointer to a different commit, representing another upstream CEF version advancement.

Poem

🐰 A whisker-twitch and a bound so bright,
CEF's freshened up with improved delight,
From one commit hash to the next we leap,
Better rendering for dreams that run deep! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title clearly describes the main change: excluding bundled NSS libs to fix AppImage launches on Arch/rolling distros, which directly aligns with the submodule bump.
Linked Issues check ✅ Passed The PR implements the primary objective from #2001: excluding bundled NSS/NSPR libraries to resolve the NSSUTIL_3.108 version mismatch that prevented AppImage startup on rolling distros.
Out of Scope Changes check ✅ Passed The PR contains only a targeted submodule bump to pick up the upstream fix for NSS library exclusion, with no extraneous changes beyond the stated objective.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

@senamakel senamakel merged commit 8cfc27b into tinyhumansai:main May 18, 2026
22 of 24 checks passed
@oxoxDev oxoxDev mentioned this pull request May 19, 2026
4 tasks
senamakel pushed a commit to tinyhumansai/tauri-cef that referenced this pull request May 20, 2026
The exclude list introduced for glibc/NSS (PR #15 and tauri-apps#1996's precedent)
broke AppImage launch on every host in two ways that the original PRs'
test plans didn't cover:

1. `ld-linux` was bundled in the exclude list under the "glibc family"
   rationale, but sharun *requires* a loader to be present in
   `$APPDIR/shared/lib/` to bootstrap the dynamic OpenHuman binary
   (whose INTERP is stripped during lib4bin processing). With it
   excluded, sharun aborts with "Interpreter not found!" before any
   chromium code runs. The loader is ABI-stable enough across glibc
   versions for the host-vs-bundle mix here to remain safe.

2. The exclusion sweep used `fs::read_dir` on top-level `shared/lib`
   only. lib4bin mirrors source paths when libraries are pulled in from
   nested locations (e.g.
   `shared/lib/snap/core20/<rev>/usr/lib/x86_64-linux-gnu/libc.so.6`
   when the build host has snap-managed apps like VS Code), so nested
   copies of `libc.so`, `libm.so`, etc. survived the sweep and broke
   `GLIBC_2.x` symbol lookups on the target host even though the
   intent was to defer to host glibc.

Both reproduce on Ubuntu 26.04 GNOME-Wayland with the locally-built
v0.53.49 AppImage. Without (1), launch dies at sharun bootstrap;
with (1) but without (2), launch dies at `libm.so.6: version
GLIBC_2.35 not found`. Both fixed by this change.

Refs tinyhumansai/openhuman#2001, tinyhumansai/openhuman#2032,
#15
AusAgentSmith pushed a commit to AusAgentSmith/openhuman that referenced this pull request May 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] AppImage launch failure on Arch Linux/Hyprland: NSS version mismatch and X11 BadWindow errors

1 participant