Skip to content

issues: the ramp exit's first session read no ToyOS row; getsockname's literal is a defect - #1143

Merged
Japabu merged 2 commits into
mainfrom
tcp-ramp3
Nov 1, 2026
Merged

Japabu merged 2 commits into
mainfrom
tcp-ramp3

Conversation

@Japabu

@Japabu Japabu commented Nov 1, 2026 •

Copy link
Copy Markdown
Collaborator

What

The T14 session that #1138 staged ran Linux, ToyOS at 4f52c30, then Linux, and every run exited 0. It decides nothing: ToyOS's osbench_lan found the peer, then refused the whole group with no netstack link holds 10.0.2.15.

The cause is on main, not in [tcp]:

  • std's TcpStream::socket_addr (sdk/std/sys/net/connection.rs) returns a hard-coded 10.0.2.15 with the stream's local port. libc's getsockname does the same.
  • Since netstack runs every link a driver brings: ranked, with failover and return (P5) #1122, osbench's sys::link_of picks a connection's link by matching that address against netstack's leases.
  • The T14's lease comes from the bench's router, so no link matches. QEMU's guest test passes only because slirp leases exactly that address.

Change (issues only)

  • Ramp issue: records the void session, and the per-connection spread from its two Linux runs.
    • At 100 ms the ten connections read 5.13–6.63 MB, a standard deviation of 478 KB. That is 16 times the 30 KB miss.
    • The two runs agree under the exit's exchangeability check: two-sided rank test p = 0.69 at 100 ms and 0.42 at 300 ms.
    • The issue stays open; the next session waits on the address fix.
  • getsockname-answers-an-address-nobody-asked-netstack-for: changes from finding to defect, with this evidence. It names std's copy of the literal and the fix: netstack's connect and accept answers carry the local address, and the SDK, std and libc return it.

Checks

Issue text only. No IP shape outside RFC 1918.

Evidence: https://github.com/ToyOSOrg/evidence/tree/35f09268e09714a8547496bdd766bcd3ca998325/r1

Risk

  • Until the address fix lands, osbench_lan's whole group refuses on every network that doesn't lease 10.0.2.15, so no LAN row is measurable on metal.

🤖 Generated with Claude Code

Japabu and others added 2 commits November 1, 2026 20:03
…s literal is a defect

The T14 session for the ramp issue's new exit (Linux, ToyOS at 4f52c30,
Linux) ran clean, but ToyOS's osbench_lan refused its group: "no netstack
link holds 10.0.2.15". std's TcpStream::local_addr answers QEMU's user
network address whatever the lease is, and since #1122 osbench names a
connection's link by that address. The ramp issue records the void session
and the Linux runs' per-connection spread: 478 KB at 100 ms, sixteen times
the parity boot's miss, with the two runs exchangeable (p = 0.69, 0.42).
The getsockname finding becomes a defect and names std's copy of the
literal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Japabu
Japabu marked this pull request as ready for review November 1, 2026 19:04
@Japabu
Japabu added this pull request to the merge queue Nov 1, 2026
Merged via the queue into main with commit 5821d91 Nov 1, 2026
10 checks passed
@Japabu
Japabu deleted the tcp-ramp3 branch November 1, 2026 19:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant