Skip to content

Localize and eliminate the native macOS timed-send fixture hang #634

Description

@LunaStev

Observed at PR #631 head d811e0c2accc8997eecb5071f8752f88e9fb44e4. Failing CI job.

On both macOS amd64 and arm64, test_tcp_backpressure_does_not_turn_readiness_into_an_unbounded_send raises subprocess.TimeoutExpired: the tcp_timeout executable remains alive after the harness's 10-second limit.

The fixture requests a 30 ms timed write of 8 MiB with nominal 4096-byte socket buffers. Its 2-second elapsed-time assertion is never reported. It also connects, accepts, allocates, frees and closes sockets; the outer timeout does not prove that send itself is the blocking phase.

posix_timeout.wave already uses per-call MSG_DONTWAIT. The current value 128 agrees with Apple's header; merely replacing that constant is not an evidence-backed fix. See Apple socket.h.

Reproduce using cargo test --locked --test std_io_regressions --jobs 2 -- --nocapture on both macOS architectures. Instrument phases and collect a bounded native stack sample to identify whether setup, send/retry/poll, timekeeping or teardown blocks.

Acceptance:

  • Identify the actual blocked phase with native evidence.
  • Enforce the timed operation's budget under established backpressure while preserving descriptor alias modes.
  • Bound setup and cleanup separately; retain the outer process-tree watchdog.
  • Exercise timeout, partial progress and subsequent usable socket state on both architectures.

This is the macOS native follow-up to #510, not evidence of a general LLVM crash. Linux and the macOS Wave Cases jobs pass in the same PR.

Source references:

Both affected jobs: amd64, arm64.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugA problem that causes incorrect behavior or crashes.ciGitHub CI or CI

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions