Ensure daemon integration children are cleaned up on assertion failure #23
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found while continuing RAM-29: crates/breadramd/tests/ipc.rs spawn_daemon returns a bare Child and stop is called only after assertions. A panic or readiness timeout drops Child without killing/waiting, leaving a live daemon and inherited harness pipes; command_surface.rs has an owner but duplicates readiness polling. Confidence: high, established by the bare Child lifetime and Rust Child drop semantics. Fix in RAM-29 existing branch: shared RAII daemon owner, suppressed inherited pipes, bounded readiness, and an unwind cleanup regression. Related to RAM-29 and distinct from the temporary-directory defect fixed by PR #19.
The correction this card asks for is contained in the RAM-29 branch: commit "fix: share bounded daemon test ownership and panic cleanup" gives the daemon integration suites a shared RAII owner that kills and reaps on panic, suppresses inherited pipes, bounds readiness, and adds an unwind regression, verifying child removal from /proc and socket removal.
It ships with the RAM-29 PR: #32
No separate implementation PR, per this card.
Reviewed, fix verified, left in review.
The RAM-56 correction on branch fix/ram-29-test-temp-cleanup (PR #32) is complete and correct:
I am not moving this card to done yet, and it is not a problem with the fix: RAM-56 has no branch of its own, so it rides on PR #32, which I have sent back to todo as a partial delivery of RAM-29 (the shared fixtures and the capped pressure harness). When that branch lands, this fix lands with it. No action needed from the implementer on this card; keep the fix commits intact.
Re-verified at the current PR #32 head (
6a8bd30), which added the shared core fixtures after the previous review. The RAM-56 correction is intact: crates/breadramd/tests/support/mod.rs still owns the child with a Drop that kills and reaps it and removes its socket,stop()reaps while preserving the stale socket for restart tests, readiness is bounded at ten seconds, and the unwind regressionassertion_unwind_reaps_the_childstill asserts the child is gone from /proc and the socket removed. Left in review: the fix rides on PR #32, which is still a partial delivery of RAM-29, so it lands with that card. No action needed on this card.Re-verified at PR #32 head
363bb7f(rebased onto main2d0965e, CI success, mergeable true). The RAM-56 correction is intact:What changed this pass: rebase onto main
2d0965ewith the policy_replay.rs conflict resolved (shared support fixtures match main), and the PR #32 body updated to Part of RAM-29 with the remaining scope named. No regression in the RAM-56 scope.Left in review: this fix rides on PR #32, which is a partial delivery of RAM-29 (PR body says Part of RAM-29), so it lands with that card. No action needed on this card. Parent RAM-29 next change: move the in-process fake provider and the action fixtures into crates/breadram-core/tests/support and point provider_execution plus action_coordinator at them.
Verified on main
44a23a56be(PR #32 squash merge, contains15a1c2f). The RAM-56 correction is present:Moving to done with RAM-29, which carried this fix.