[GH-ISSUE #8561] [Bug] Signal verifier can release its fixture root before MCP cleanup completes #6649

Open
opened 2026-11-01 21:12:56 +00:00 by bsakaguchi · 0 comments
Owner

Originally created by @morluto on GitHub (Nov 1, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/8561

Area

Signal recording real-provider verifier cleanup

Observed behavior

At revision 245a581818ab13694fa438a06e39898ce03ab206, verify-signal-recording.mjs allocates its private fixture root before reading /proc/self/limits outside the cleanup scope. Its cleanup subsequently attempts MCP client, transport and root closes independently, so root close is attempted even when both MCP closes fail. Allocation and limits; cleanup.

Reproduction and evidence

On macOS arm64, Node 24.22.1, subprocess controls ran the actual script with simulated Linux platform and fake owners. An injected limits-read failure after root acquisition bypassed root close. Separately, injected MCP connect and both close failures still invoked root close; the primary and cleanup failures were reported. The fake root recorded method invocation only; actual directory deletion and live process survival were not tested.

This verifier uses the SDK stdio transport discussed in #8555, whose successful close alone is not proof of child completion. No sigrok, MCP server, real Linux environment or hardware was run; real-world frequency and impact are NOT_ENOUGH_INFO.

Expected behavior

Enter cleanup ownership immediately after root acquisition, retain the root while acquired MCP/process ownership is unresolved, preserve failures and support cleanup retry where applicable. Verify the SDK transport's child completion, rather than relying solely on its close return.

Originally created by @morluto on GitHub (Nov 1, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/8561 ### Area Signal recording real-provider verifier cleanup ### Observed behavior At revision `245a581818ab13694fa438a06e39898ce03ab206`, `verify-signal-recording.mjs` allocates its private fixture root before reading `/proc/self/limits` outside the cleanup scope. Its cleanup subsequently attempts MCP client, transport and root closes independently, so root close is attempted even when both MCP closes fail. [Allocation and limits](https://github.com/morluto/rea/blob/245a581818ab13694fa438a06e39898ce03ab206/scripts/verify-signal-recording.mjs#L34-L109); [cleanup](https://github.com/morluto/rea/blob/245a581818ab13694fa438a06e39898ce03ab206/scripts/verify-signal-recording.mjs#L435-L440). ### Reproduction and evidence On macOS arm64, Node 24.22.1, subprocess controls ran the actual script with simulated Linux platform and fake owners. An injected limits-read failure after root acquisition bypassed root close. Separately, injected MCP connect and both close failures still invoked root close; the primary and cleanup failures were reported. The fake root recorded method invocation only; actual directory deletion and live process survival were not tested. This verifier uses the SDK stdio transport discussed in #8555, whose successful close alone is not proof of child completion. No sigrok, MCP server, real Linux environment or hardware was run; real-world frequency and impact are NOT_ENOUGH_INFO. ### Expected behavior Enter cleanup ownership immediately after root acquisition, retain the root while acquired MCP/process ownership is unresolved, preserve failures and support cleanup retry where applicable. Verify the SDK transport's child completion, rather than relying solely on its close return.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#6649
No description provided.