summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-20 15:42:43 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-20 15:42:43 -0400
commita1455655b68f5fd9710f764be8e6afbed5b2a81c (patch)
tree2fac27f4f4b4ae927b7a8f445eff66a26f00e392 /tools
parentee09b6c4cdea5ec95d1bfe32b5bcec6703a252c7 (diff)
downloadopen-iov-a1455655b68f5fd9710f764be8e6afbed5b2a81c.tar.gz
open-iov-a1455655b68f5fd9710f764be8e6afbed5b2a81c.zip
cuda-ab/soak: accept a terminal STATUS line as completion - the guest wrapper's EXIT= marker is lost when the guest's process reaping stalls (observed: victory_mail reached STATUS OK but the zombie was never reaped; soak reported a false still-running failure)
Diffstat (limited to 'tools')
-rwxr-xr-xtools/cuda-ab/soak.sh13
1 files changed, 13 insertions, 0 deletions
diff --git a/tools/cuda-ab/soak.sh b/tools/cuda-ab/soak.sh
index f870fda..c150692 100755
--- a/tools/cuda-ab/soak.sh
+++ b/tools/cuda-ab/soak.sh
@@ -135,6 +135,19 @@ run_one() {
r="$(gssh "cat $out 2>/dev/null")" || true
[ -n "$r" ] && text="$r"
printf '%s' "$text" | grep -q 'EXIT=' && break
+ # The guest wrapper's EXIT= marker can be lost when the guest's
+ # process reaping stalls (observed: the client reached STATUS OK
+ # but its zombie was never reaped and `timeout` never wrote the
+ # marker). A terminal STATUS line is proof of completion by
+ # itself - accept it after a short grace so the EXIT= marker
+ # still wins when it does arrive.
+ if printf '%s' "$text" | grep -qE 'STATUS (OK|FAIL)'; then
+ sleep 10
+ r="$(gssh "cat $out 2>/dev/null")" || true
+ [ -n "$r" ] && text="$r"
+ printf '%s' "$text" | grep -q 'EXIT=' && break
+ break
+ fi
tnow=$(date +%s)
if [ $((tnow - t0)) -gt $((TMO + 120)) ]; then
if client_alive "$bin"; then