fix(builder): retain bounded Linux Play startup diagnostics #2024
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!2024
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/linux-play-diagnostics"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
When a game exits before its internal log explains why, Linux Builder's Play button discards the diagnostic that a direct terminal launch would show. Play now leaves a small local startup log after the process exits.
Closes #2022. Related to the diagnosis in #1984.
Technical changes
hookshot_startup.login the game folder.Validation
1cf737eon mainc09e0ac, a WSL Ubuntu test launched two synthetic children concurrently. Both emitted 1 MiB on stderr and exited 73. The final private log contained the capped prefix and the exit status. A forced publication failure did not prevent the child from running.Looks good. I read the launcher script and the Python change; CI is green on the head (source suite on Linux and Windows, Windows build, AppImage), and I did not run it myself.
The design holds up: the script is passed as
sh -csource, so it still works after the AppImage mount goes away.mktempfailure falls back toexec "$1", and an unreadable script falls back to the old directPopen. The pipeline always drains stderr, so a noisy game is not blocked after the 64 KiB cap. The log is published with an atomicmv, and the temp dir is removed by the trap.hookshot-launchand the terminal path are untouched. The test is declared withRUN_ALL_SKIPfor Windows and is discovered byrun_all.py, and it covers the concurrent launches and the failed-publish case.Nits, none blocking:
hookshot_startup.log, so an earlier crash's log is overwritten by the next good run. That seems fine for a "last run" log, but it is worth knowing.mv -Tis GNU-specific. This is fine on the glibc distros the AppImage targets, and a failure just means no log, not a failed launch.github-sync referenced this pull request2026-11-12 06:22:54 +00:00