wavefnd / wavefnd/Wave

Establish real backpressure before asserting partial timed sends on native Windows ARM64

Open
#635 0 comments 0 reactions 0 assignees View on GitHub
bug ci
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.