Skip to content

Known issues: the WebSocket close path's suspected RST-for-FIN race - #109

Merged
codetalcott merged 1 commit into
mainfrom
claude/ws-close-race-note
Aug 25, 2026
Merged

Known issues: the WebSocket close path's suspected RST-for-FIN race#109
codetalcott merged 1 commit into
mainfrom
claude/ws-close-race-note

Conversation

@codetalcott

Copy link
Copy Markdown
Owner

Doc-only (CI skips docs/**). Records the one-occurrence ws_probe failure from #107's first smoke run with its full diagnosis — mechanism hypothesis (slot closed with the client's close-echo unread → kernel RST instead of FIN), the evidence it's a timing window (rerun passed, identical code green on main an hour prior), and the fix direction if it recurs (consume the close echo before the final close). Deliberately recorded rather than fixed blind: a fix for a failure that cannot yet be reproduced cannot be sabotage-verified.

🤖 Generated with Claude Code

Seen once, on a macOS CI runner: ws_probe failed with ConnectionResetError
at its final recv -- after the whole close handshake had verified, waiting
only for the FIN. A rerun of identical code passed and main with the same
server code had passed an hour earlier, so it is a timing window.

Suspected mechanism: the loop closes the slot while the client's
close-echo frame is still unread in the receive buffer, and a socket
closed with pending unread data sends RST rather than FIN. Fix direction
if it recurs: consume the peer's close echo before the final close in the
WS teardown path. Recorded rather than fixed, per the repo's own rule --
a guard must be verified load-bearing, and a fix for a failure that
cannot yet be reproduced cannot be. The probe stays strict: the FIN is
the contract, and noticing is its job.

Co-Authored-By: Claude Fable 5 (1M context) <noreply@anthropic.com>
@codetalcott
codetalcott merged commit 1490aa2 into main Aug 25, 2026
@codetalcott
codetalcott deleted the claude/ws-close-race-note branch August 25, 2026 18:04
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