diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-20 15:42:43 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-20 15:42:43 -0400 |
| commit | a1455655b68f5fd9710f764be8e6afbed5b2a81c (patch) | |
| tree | 2fac27f4f4b4ae927b7a8f445eff66a26f00e392 | |
| parent | ee09b6c4cdea5ec95d1bfe32b5bcec6703a252c7 (diff) | |
| download | open-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)
| -rwxr-xr-x | tools/cuda-ab/soak.sh | 13 |
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 |
