Observed at PR #631 head d811e0c2accc8997eecb5071f8752f88e9fb44e4. Failing CI job.
Both native macOS jobs fail the same two tests in tools.test_std_io_runtime:
test_capture_has_no_inherited_pipe_reader_and_no_parent_leak: fixture exits 12.
test_capture_writer_observes_consumer_closure: fixture exits 11.
capture.wave exit 12 combines child exit status, byte count and payload checks. capture_close.wave exit 11 combines wait failure and non-normal child termination. Logs contain no child status or payload, so they do not establish a leaked reader, exec failure, or SIGPIPE root cause.
Reproduce on each native host with the repository std installed:
cargo test --locked --test std_io_regressions --jobs 2 -- --nocapture
Trace fork return conventions, descriptor remapping/closure, script execution and child wait status. Compare a minimal executable child with the generated Python shebang child to distinguish runtime defects from fixture assumptions. Retain the closed-standard-descriptor and early-consumer-closure checks.
Acceptance:
- Both capture scenarios pass repeatedly on native amd64 and arm64 macOS.
- A missing child reader is demonstrated by descriptor inspection and bounded producer termination.
- Preserve child status and capture contents when a check fails.
- No libc binding workaround and no platform skip to hide failure.
Follow-up to #559 after its child-reader cleanup; related to broader Darwin provider audit #434. The two failures are intentionally grouped until evidence establishes different root causes.
Source references:
Both affected jobs: amd64, arm64.
Observed at PR #631 head
d811e0c2accc8997eecb5071f8752f88e9fb44e4. Failing CI job.Both native macOS jobs fail the same two tests in
tools.test_std_io_runtime:test_capture_has_no_inherited_pipe_reader_and_no_parent_leak: fixture exits 12.test_capture_writer_observes_consumer_closure: fixture exits 11.capture.waveexit 12 combines child exit status, byte count and payload checks.capture_close.waveexit 11 combines wait failure and non-normal child termination. Logs contain no child status or payload, so they do not establish a leaked reader, exec failure, or SIGPIPE root cause.Reproduce on each native host with the repository std installed:
cargo test --locked --test std_io_regressions --jobs 2 -- --nocaptureTrace fork return conventions, descriptor remapping/closure, script execution and child wait status. Compare a minimal executable child with the generated Python shebang child to distinguish runtime defects from fixture assumptions. Retain the closed-standard-descriptor and early-consumer-closure checks.
Acceptance:
Follow-up to #559 after its child-reader cleanup; related to broader Darwin provider audit #434. The two failures are intentionally grouped until evidence establishes different root causes.
Source references:
Both affected jobs: amd64, arm64.