Skip to content

d76d6d1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Nov 07:08

fix(apps): Probe the apps runner once, and link its tools atomically

A session's log showed "Apps panel hidden: selkies-proot cannot run
here. ln: failed to create symbolic link '/home/ubuntu/.local/bin/proot':
Already exists", then "Apps panel enabled" in the same millisecond.
Both stacks spawned the runner's probe right after
Dispatcher::connect(), which spawns it already, so two selkies-proot check ran at once on the same runner and the verdict was whichever
finished last. And the wrapper's ln -sfn unlinks and then creates, so
of two runs linking at once (a probe beside a terminal's proot-apps as
well) one finds the name the other just made and fails under set -e.

The stacks no longer spawn their own probe. The wrapper makes each link
under a name of its own and renames it over the old one (mv -fT, which
replaces a link to a directory rather than moving into it): eight
concurrent checks, five rounds, failed 26 of 40 times with the old
wrapper and 0 of 40 with this one, leaving no temporary names; mv -fT
replaces in place on Ubuntu 26.04 and Debian trixie.