Files
bun.sh/test/regression/issue
robobun 790e5d4a7e fix: prevent assertion failure when stopping server with pending requests (#22070)
## Summary

Fixes an assertion failure that occurred when `server.stop()` was called
while HTTP requests were still in flight.

## Root Cause

The issue was in `jsValueAssertAlive()` at
`src/bun.js/api/server.zig:627`, which had an assertion requiring
`server.listener != null`. However, `server.stop()` immediately sets
`listener` to null, causing assertion failures when pending requests
triggered callbacks that accessed the server's JavaScript value.

## Solution

Converted the server's `js_value` from `jsc.Strong.Optional` to
`jsc.JSRef` for safer lifecycle management:

- **On `stop()`**: Downgrade from strong to weak reference instead of
calling `deinit()`
- **In `finalize()`**: Properly call `deinit()` on the JSRef  
- **Remove problematic assertion**: JSRef allows safe access to JS value
via weak reference even after stop

## Benefits

-  No more assertion failures when stopping servers with pending
requests
-  In-flight requests can still access the server JS object safely  
-  JS object can be garbage collected when appropriate
-  Maintains backward compatibility - no external API changes

## Test plan

- [x] Reproduces the original assertion failure
- [x] Verifies the fix resolves the issue
- [x] Adds regression test to prevent future occurrences
- [x] Confirms normal server functionality still works

The fix includes a comprehensive regression test at
`test/regression/issue/server-stop-with-pending-requests.test.ts`.

🤖 Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2025-08-22 22:39:47 -07:00
..
2025-08-06 06:44:46 -07:00
2025-01-28 17:23:57 -08:00
2025-06-03 13:23:12 -07:00
2025-06-03 23:41:37 -07:00
2025-01-17 22:08:07 -08:00
2024-06-14 01:50:36 -07:00
2024-09-24 22:46:18 -07:00
2025-03-03 21:38:05 -08:00
2025-05-26 21:18:22 -07:00
2025-07-03 01:06:22 -07:00
2025-07-23 22:31:42 -07:00
2025-07-20 23:02:10 -07:00