fix(soak): resolve the .exe whenever it exists, not only when -x fails

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 <martin.vogel.tech@gmail.com>
This commit is contained in:
Martin Vogel committed 2026-07-27 06:43:39 +02:00
1 parent 7973f1aaec
commit c3b35691ab
1 file changed
+8 -1
+8 -1
View File
@@ -67,7 +67,14 @@ esac
[ "$DURATION" -gt 0 ] || { echo "soak-legs: duration must be positive" >&2; exit 2; }
# Windows builds produce <name>.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; }