Skip to content

Commit 4ec0a18

Browse files
OriPekelmanclaude
andcommitted
harness: 180s timeout per verify (a runtime-hanging miscompiled smoke can't stall the run)
flutie's --full smoke compiled to a binary that infinite-loops at runtime, which hung the Phase 2a xargs barrier indefinitely (Phase 2b never started). Wrap each verify in 'timeout 180' so a non-terminating smoke just yields no verdict instead of blocking the whole behaviour audit. (flutie itself is a non-termination miscompile worth a separate look.) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 116d1c2 commit 4ec0a18

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

bin/harness-run.sh

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,10 @@ echo "[harness-run] Phase 2a: ${#SMOKES[@]} behaviour smokes (--full)"
7171
printf '%s\n' "${SMOKES[@]}" \
7272
| xargs -P "$SHARDS" -I{} bash -c '
7373
s="$1"; g="$(basename "$s" .rb)"
74-
"$0" verify "$g" --smoke "$s" --full 2>&1 \
74+
# 180s cap so a miscompiled smoke that infinite-loops at runtime (or a
75+
# runaway compile) can'\''t stall the whole xargs barrier — the gem just
76+
# gets no verdict this run. (flutie did exactly this, 2026-06-05.)
77+
timeout 180 "$0" verify "$g" --smoke "$s" --full 2>&1 \
7578
| sed "s|^| [smoke:$g] |"
7679
' "$CLI" {} > "$OUT/phase2a.log" 2>&1 || true
7780
echo "[harness-run] Phase 2a done -> $OUT/phase2a.log"
@@ -83,7 +86,7 @@ echo "[harness-run] Phase 2b: $LOADER_COUNT require-only loaders"
8386
grep -vE '^\s*(#|$)' "$LOADERS_FILE" \
8487
| xargs -P "$SHARDS" -I{} bash -c '
8588
g="$1"
86-
"$0" verify "$g" 2>&1 \
89+
timeout 180 "$0" verify "$g" 2>&1 \
8790
| sed "s|^| [load:$g] |"
8891
' "$CLI" {} > "$OUT/phase2b.log" 2>&1 || true
8992
echo "[harness-run] Phase 2b done -> $OUT/phase2b.log"

0 commit comments

Comments
 (0)