fix(linux): exclude bundled NSS libs so AppImage launches on Arch / rolling distros#2032
Merged
senamakel merged 1 commit intoMay 18, 2026
Conversation
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).
Contributor
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThis PR updates the vendored ChangesCEF Vendored Submodule Update
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
7 tasks
This was referenced May 18, 2026
Merged
5 tasks
12 tasks
Closed
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Submodule bump for
app/src-tauri/vendor/tauri-cefto 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.sofor PKCS#11. On rolling distros the host'slibsoftokn3requires symbols only present in newer NSS (e.g.NSSUTIL_3.108), butLD_LIBRARY_PATHresolveslibnssutil3from the older bundled\$APPDIR/shared/libfirst — the loader aborts the process before any window appears: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)
libsoftokn3.solibnssutil3.sodefines up toNSSUTIL_3.94NSSUTIL_3.117NSSUTIL_3.108❌Direct
dlopen(\"/usr/lib/libsoftokn3.so\")succeeds on a clean Arch container but fails the moment the AppImage'sshared/libis prepended toLD_LIBRARY_PATH— exactly matching the reporter's traceback.Change
This PR contains a single submodule bump:
All code lives in tinyhumansai/tauri-cef#15.
Test plan
cargo check -p tauri-bundlerpasses against the new submodule revision locallylibnss*/libnssutil*/libsoftokn3*/libfreebl*/libnspr4*/libplc4*/libplds4*/libssl3*/libsmime3*under\$APPDIR/shared/libarchlinux:latest: chromium crypto init must not abort withNSSUTIL_3.108 not foundRefs tinyhumansai/tauri-cef#15
Refs #1996 (glibc-family precedent)
Summary by CodeRabbit