From 44a6cb60655997cebd53e168862bc0801492952e Mon Sep 17 00:00:00 2001 From: Sylpheed port agent Date: Thu, 3 Sep 2026 15:22:45 +0000 Subject: [PATCH] port: the display-restart recipe omitted the LOCK file check-all's guard printed 'rm -f /tmp/.X11-unix/X' and nothing else. Removing only the socket leaves /tmp/.X-lock behind; Xvfb then exits 1 immediately and the next command still reports no display, which reads as the restart having failed for a deeper reason rather than as an incomplete recipe. Hit three times across this project, each time following the printed recipe. The fix was visible in Xvfb's own stderr the whole time and nobody had read it -- the guard was written to save exactly that step, so an incomplete guard is worse than none here. --- tools/port/check-all | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/port/check-all b/tools/port/check-all index 007bb095..bb4af696 100755 --- a/tools/port/check-all +++ b/tools/port/check-all @@ -54,7 +54,13 @@ step() { # name, expectation, command... if ! DISPLAY="$DISPLAY" timeout 10 xdpyinfo >/dev/null 2>&1; then echo "🔴 no X display on $DISPLAY -- every Godot step below would fail for that one reason." echo " Xvfb does not survive a container restart and leaves its socket behind. Start it with:" - echo " rm -f /tmp/.X11-unix/X\${DISPLAY#:} ; Xvfb $DISPLAY -screen 0 1280x720x24 -nolisten tcp &" + echo " rm -f /tmp/.X11-unix/X\${DISPLAY#:} /tmp/.X\${DISPLAY#:}-lock" + echo " Xvfb $DISPLAY -screen 0 1280x720x24 -nolisten tcp &" + echo " 🔴 THE LOCK FILE IS NOT OPTIONAL and this recipe omitted it until" + echo " 2026-09-03. Removing only the socket leaves /tmp/.X-lock behind," + echo " Xvfb exits 1 immediately, and the next command still reports no" + echo " display -- which reads as the restart having failed for some deeper" + echo " reason. Cost three occurrences before anyone read Xvfb's own stderr." exit 3 fi