From c3b35691ab4514564f1abb6db606a1cfdf2d4fe5 Mon Sep 17 00:00:00 2001 From: Martin Vogel Date: Mon, 27 Jul 2026 06:43:39 +0200 Subject: [PATCH] fix(soak): resolve the .exe whenever it exists, not only when -x fails MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both hosted-runner Windows soak legs failed at Phase 1/diagnostics with an empty frontend stderr while the daemon's own log showed a healthy diagnostics.start: the workflows pass the suffix-less binary path, msys resolves it transparently (so the old 'append .exe only when the plain name is not executable' branch never fired), and soak-test keys BOTH native-Windows gates — the cygpath'd CBM_CACHE_DIR and the coproc stdio branch — off the literal .exe suffix. A suffix-less native binary therefore received a POSIX-form cache path: daemon logs mis-rooted (diagnostics grep zero, arm64) and the frontend's cache path handling died silently (x64 SIGPIPE at first write). Reproduced on the VM's CLANG64 environment with a suffix-less invocation (same FAIL) and red->green proven: with the normalization the identical invocation runs the full quick soak to PASSED. Signed-off-by: Martin Vogel --- scripts/soak-legs.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/scripts/soak-legs.sh b/scripts/soak-legs.sh index 1177c5873..8ebf16a66 100755 --- a/scripts/soak-legs.sh +++ b/scripts/soak-legs.sh @@ -67,7 +67,14 @@ esac [ "$DURATION" -gt 0 ] || { echo "soak-legs: duration must be positive" >&2; exit 2; } # Windows builds produce .exe; resolve it here so every venue passes the # same plain path and carries no per-platform binary-name logic of its own. -if [ ! -x "$BINARY" ] && [ -x "${BINARY}.exe" ]; then +# Resolve whenever the .exe EXISTS, not only when the plain name fails -x: +# msys resolves the suffix-less name transparently (it IS -x), but soak-test +# keys its native-Windows handling — cygpath'd CBM_CACHE_DIR, coproc stdio — +# off the literal .exe suffix. A suffix-less native binary therefore received +# a POSIX-form cache path, mis-rooting the daemon logs and silently disabling +# diagnostics (both hosted-runner Windows soak legs; reproduced on the VM's +# CLANG64 environment with a suffix-less invocation). +if [[ "$BINARY" != *.exe ]] && [ -x "${BINARY}.exe" ]; then BINARY="${BINARY}.exe" fi [ -x "$BINARY" ] || { echo "soak-legs: binary '$BINARY' missing or not executable — build first" >&2; exit 2; }