Not the rare flake I first called it. It has now hit roughly half of the runs that reach it, and each hit burns the full 30-minute job budget and cancels every later step — so the SDK suite never runs at all on those.
Signature
06:17:00 test agent::rung_c_sigkill_boundaries_resume_only_unfinished_steps_via_real_cli
has been running for over 60 seconds
06:42:29 ##[error]The operation was canceled.
Test kernel reaches 30m15s / 30m16s and dies. When healthy, the whole crash_resume binary — all 34 tests including this one — finishes in 38 seconds.
Tally of runs that reached the test
| run |
branch |
outcome |
| 33843408251 |
feat/tick-runner-0903 (#157) |
passed the test (38s binary) |
| 33843430434 |
feat/v2-surface-package (#134) |
passed the test (38s binary) |
| 33843397637 |
feat/v2-gate-contract (#139) |
hung, cancelled 30m15s |
| 33844679490 (1st) |
fix/155-crash-skips-backoff (#158) |
hung, cancelled 30m16s |
| 33844679490 (rerun) |
same commit |
passed, whole job 6m46s |
| 33847657688 |
ci/analyzer-skip-0904 (#159) |
Test kernel in progress 16+ min at time of writing |
Same commit both hung and passed (#158), which rules out any particular branch and rules out my own suspicion that the kernel-touching PRs were at fault — I asserted that on #139 and have corrected it there.
Not reproducible locally
macOS, this repo, on the #158 branch:
crash_resume full binary: PASS in 37–47s, 34/34, at default parallelism, --test-threads=4, and --test-threads=2;
- the test alone: 3/3 PASS in ~1s.
So it is specific to the Linux runner, not to thread count and not to the test in isolation.
Why it matters more than a flaky test normally would
- It is not a failure, it is a hang. The job burns its whole budget, then cancels — 30 minutes per hit.
- Cancellation skips
Install SDK dependencies and everything after, so a hit means the SDK suite does not run at all. A PR can look "checked" while two thirds of the gate never executed.
- At roughly 50% it will hit most PRs on first try, so the practical cost is a re-run cycle on nearly everything.
This was invisible before #153, because the kernel suite never ran in CI.
Suggested direction, not a fix
The test drives kill/resume boundaries against a real CLI. A resume path waiting on something that never arrives — a process that does not reap, a socket read with no deadline, a lease that is never released — fits the evidence. Worth adding a hard per-test timeout so the failure is a fast red with a backtrace instead of a 30-minute cancellation, independent of the root cause; the diagnosis is much easier from a panic than from a killed job.
Found while landing #154/#158/#159. Filed separately because it blocks every PR and is unrelated to any of them.
Not the rare flake I first called it. It has now hit roughly half of the runs that reach it, and each hit burns the full 30-minute job budget and cancels every later step — so the SDK suite never runs at all on those.
Signature
Test kernelreaches 30m15s / 30m16s and dies. When healthy, the wholecrash_resumebinary — all 34 tests including this one — finishes in 38 seconds.Tally of runs that reached the test
feat/tick-runner-0903(#157)feat/v2-surface-package(#134)feat/v2-gate-contract(#139)fix/155-crash-skips-backoff(#158)ci/analyzer-skip-0904(#159)Test kernelin progress 16+ min at time of writingSame commit both hung and passed (#158), which rules out any particular branch and rules out my own suspicion that the kernel-touching PRs were at fault — I asserted that on #139 and have corrected it there.
Not reproducible locally
macOS, this repo, on the #158 branch:
crash_resumefull binary: PASS in 37–47s, 34/34, at default parallelism,--test-threads=4, and--test-threads=2;So it is specific to the Linux runner, not to thread count and not to the test in isolation.
Why it matters more than a flaky test normally would
Install SDK dependenciesand everything after, so a hit means the SDK suite does not run at all. A PR can look "checked" while two thirds of the gate never executed.This was invisible before #153, because the kernel suite never ran in CI.
Suggested direction, not a fix
The test drives kill/resume boundaries against a real CLI. A resume path waiting on something that never arrives — a process that does not reap, a socket read with no deadline, a lease that is never released — fits the evidence. Worth adding a hard per-test timeout so the failure is a fast red with a backtrace instead of a 30-minute cancellation, independent of the root cause; the diagnosis is much easier from a panic than from a killed job.
Found while landing #154/#158/#159. Filed separately because it blocks every PR and is unrelated to any of them.