fix: telemetry flush-on-exit panic and broaden Linux EGL/render fallback - #155
Merged
Conversation
added 5 commits
August 11, 2026 15:38
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
A single-looking crash report on #135 turned out to be two independent bugs:
tauri-plugin-aptabasefork'sflush_blocking()usedfutures::executor::block_on, which provides no Tokio reactor context. It fires unconditionally from the plugin'sRunEvent::Exithandler on the main thread, so any process exit within 60s of launch (any OS, any reason) — before the background 60s flush had drained the queuedlaunchtelemetry event — panicked withthere is no reactor running, must be called from the context of a Tokio 1.x runtime. This is the exact panic text reported on Linux, but it has nothing to do with Linux or EGL: it just gets exposed reliably there because EGL failures cause near-instant exits.devlint/tauri-plugin-aptabase@364eb00, branchfix/tokio-runtime-panic) swappingfutures::executor::block_onfortauri::async_runtime::block_on— the same pattern already used to fix the siblingstart_polling()call in the same file. Bumped the pinnedrevinCargo.toml/Cargo.lockaccordingly.WEBKIT_DISABLE_COMPOSITING_MODE/WEBKIT_DISABLE_DMABUF_RENDERER(added for GitWand starts and displays a blank window only! #135/Cannot open the App | deb | Linux Mint 22 x86_64 #139 in v3.6.1) only steer WebKitGTK's compositing path, not the earlier EGL display acquisition step, which is whereCould not create default EGL display: EGL_BAD_PARAMETERcan originate on some native-Wayland/Gnome setups. AddedLIBGL_ALWAYS_SOFTWARE=1alongside the existing two vars, guarded so it never overrides a value already set in the environment.Design doc:
docs/superpowers/specs/2026-08-11-issue-135-linux-startup-robustness-design.mdPlan doc:
docs/superpowers/specs/2026-08-11-issue-135-linux-startup-robustness-plan.mdAddresses #135.
Test plan
kill— a plain signal doesn't trigger Tauri'sRunEvent::Exit) within 3s of launch → reproduced the exact reported panic verbatim in the terminal. Rebuilt with the fix (pnpm tauri build) and repeated the identical test → clean exit, no panic.cargo checkpasses;git diff --statfor the rev bump touches onlyCargo.toml+Cargo.lock'stauri-plugin-aptabaseentry (no unrelated dependency churn).ci.ymlgates thedesktopjob to pushes onmain), so this Linux-only code path gets its first real CI compile after merge.Follow-up (documented, not in this PR)
The AppImage
LD_LIBRARY_PATH-pollution theory (AppImage'sAppRunwrapper could cause GitWand's own process to resolve GTK/WebKit/EGL against bundled, version-mismatched libraries) remains open. Properly fixing it requires a self-re-exec early inmain(), which is riskier and deserves its own design — see the design doc's Follow-up section. Next concrete step: ask the reporter to runlddagainst their extracted AppImage binary to confirm or rule this out.