mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
Fix Windows named pipe segfault in ReleaseFast builds (#21950)
## Summary - Fix a race condition in Windows named pipes that caused segfaults in ReleaseFast builds - The segfault occurred at address 0xFFFFFFFFFFFFFFFF (max u64), indicating null pointer underflow - Root cause was the StreamingWriter accessing a dangling pipe pointer after pipe closure ## Root Cause The issue occurred when: 1. `onPipeClose()` sets `this.pipe = null` 2. But `this.writer.source` still points to the old pipe 3. Later callbacks (`onWritable`, `onWrite`) try to access `source.pipe` 4. This results in accessing freed memory, causing segfaults in optimized builds ## Solution - Clear the writer's source pointer when the pipe closes in `onPipeClose()` - Existing null checks in `onWrite()` and `callWriteOrEnd()` prevent dangling pointer access - This ensures proper cleanup ordering and eliminates the race condition ## Test Plan - [x] Verified existing tests still pass on Linux/macOS - [x] Code compiles successfully on all platforms including Windows ReleaseFast - [x] The change is minimal and surgical, affecting only the cleanup path ## Affected Tests This fixes segfaults in: - `test/js/node/tls/node-tls-namedpipes.test.ts` - `test/js/node/net/node-net.test.ts` (named pipes section) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Claude Bot <claude-bot@bun.sh> Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in: