Establish real backpressure before asserting partial timed sends on native Windows ARM64
- Dominant language
- Rust
- Stars
- 53
- Forks
- 16
- Avg merge
- 4h 22m
- Merged PRs (30d)
- 46
Description
Observed at PR #631 head `d811e0c2accc8997eecb5071f8752f88e9fb44e4`. [Failing CI job](https://github.com/wavefnd/Wave/actions/runs/34737095086/job/103670349665).
The native Windows ARM64 MSVC I/O harness fails only `test_tcp_backpressure_does_not_turn_readiness_into_an_unbounded_send`, with fixture exit 16. The timed-read/cancellation/later-data test passes.
In `tcp_timeout.wave`, exit 16 means `result.count < 0 || result.count >= 8388608`. There is no recorded count or error. The elapsed-time guard precedes it and did not fail. This does not establish a timeout violation or an ARM64 ABI defect.
The fixture ignores results of `tcp_set_send_buffer` / `tcp_set_recv_buffer`, performs one 8 MiB write, and assumes every platform must complete less than that amount. It never establishes that the transport is saturated before invoking the timed operation.
Scope: validate socket-option setup, report actual results, and create bounded, deterministic backpressure on native Windows. Allow legitimate full completion before saturation; then prove the deadline/cancellation path is exercised. Compare returned counts with peer-observed data and confirmed completions before changing the Windows implementation. Investigate runtime/ABI behavior if that evidence shows a mismatch.
Reproduce using the native ARM64 CI runtime command with `--test std_io_regressions --target aarch64-pc-windows-msvc --jobs 2`.
Acceptance:
- The test demonstrably reaches sustained backpressure and checks a real timed operation.
- Native ARM64 runs validate partial/full successful completion, cancellation, buffer lifetime and later I/O.
- No blanket allowance for arbitrary counts, fixed sleep, larger watchdog or skip as the fix.
Related to #510 and #616. GNU/Wine success is supplementary and does not replace native MSVC validation.
Source references:
- [tests/fixtures/io/tcp_timeout.wave](https://github.com/wavefnd/Wave/blob/d811e0c2accc8997eecb5071f8752f88e9fb44e4/tests/fixtures/io/tcp_timeout.wave)
- [std/sys/windows/timed_socket.wave](https://github.com/wavefnd/Wave/blob/d811e0c2accc8997eecb5071f8752f88e9fb44e4/std/sys/windows/timed_socket.wave)
Contributor guide
Research direction
Start with tests/fixtures/io/tcp_timeout.wave and the native ARM64 command: --test std_io_regressions --target aarch64-pc-windows-msvc --jobs 2. Inspect std/sys/windows/timed_socket.wave and the socket-option results before changing the Windows implementation. Done means native ARM64 demonstrates sustained backpressure, validates partial or full completion, cancellation, buffer lifetime and later I/O without sleeps, skips or arbitrary count allowances.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- operating-systems, testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100