robobun
635034ee33
fix(shell): use-after-free in runFromJS when setupIOBeforeRun fails ( #26920 )
...
## Summary
- Fixes #26918 — segfault at address `0x28189480080` caused by
use-after-free in the shell interpreter
- When `setupIOBeforeRun()` fails (e.g., stdout handle unavailable on
Windows), the `runFromJS` error path called `deinitFromExec()` which
directly freed the GC-managed interpreter object with
`allocator.destroy(this)`. When the GC later swept and called
`deinitFromFinalizer()` on the already-freed memory, it caused a
segfault.
- Replaced `deinitFromExec()` with `derefRootShellAndIOIfNeeded(true)`
which properly cleans up runtime resources (IO handles, shell
environment) while leaving final object destruction to the GC finalizer
— matching the pattern already used in `finish()`.
## Test plan
- [x] Added regression test in `test/regression/issue/26918.test.ts`
that verifies the shell interpreter handles closed stdout gracefully
without crashing
- [x] Test passes with `bun bd test test/regression/issue/26918.test.ts`
- [ ] The actual crash is primarily reproducible on Windows where stdout
handles can be truly unavailable — CI Windows tests should validate the
fix
🤖 Generated with [Claude Code](https://claude.com/claude-code )
---------
Co-authored-by: Claude Bot <claude-bot@bun.sh >
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2026-02-11 17:51:10 -08:00
..
2026-02-06 18:05:17 -08:00
2025-07-22 17:51:38 -07:00
2026-01-28 20:24:02 -08:00
2026-02-09 22:03:54 -08:00
2025-12-15 12:51:13 -08:00
2026-02-10 01:53:07 -08:00
2025-07-22 17:51:38 -07:00
2026-02-10 22:32:08 -08:00
2026-02-09 22:03:54 -08:00
2026-02-11 17:41:45 -08:00
2026-02-04 19:38:12 -08:00
2026-01-19 22:45:56 -08:00
2025-11-10 14:38:26 -08:00
2026-01-14 13:34:31 -08:00
2026-02-09 04:47:52 -08:00
2025-11-10 14:38:26 -08:00
2025-07-22 17:51:38 -07:00
2026-01-22 13:44:49 -08:00
2026-01-19 17:04:44 -08:00
2026-01-19 17:12:42 -08:00
2026-01-21 18:41:15 -08:00
2026-01-26 10:52:35 -08:00
2026-02-09 00:36:30 -08:00
2026-02-10 23:06:22 -08:00
2025-07-21 13:26:47 -07:00
2026-01-09 16:56:31 -08:00
2026-02-03 22:18:40 -08:00
2025-10-03 17:10:28 -07:00
2026-01-27 13:35:15 -08:00
2025-11-24 20:16:03 -08:00
2025-11-10 14:38:26 -08:00
2025-11-10 14:38:26 -08:00
2026-02-09 22:03:54 -08:00
2026-01-15 18:09:33 -08:00
2025-11-10 14:38:26 -08:00
2025-11-20 20:56:02 -08:00
2026-02-11 17:51:10 -08:00
2025-11-10 14:38:26 -08:00
2026-01-21 13:01:25 -08:00
2026-02-05 17:31:15 -08:00
2026-01-21 13:01:25 -08:00
2025-11-10 14:38:26 -08:00
2025-12-22 12:07:24 -08:00
2026-01-23 00:07:06 -08:00
2026-01-21 13:01:25 -08:00
2025-12-25 14:00:58 -08:00
2026-01-14 16:46:20 -08:00
2025-11-10 14:38:26 -08:00
2025-10-04 02:17:55 -07:00
2026-01-22 14:35:18 -08:00
2025-11-26 00:02:43 -08:00
2026-01-30 01:38:45 -08:00
2025-11-05 15:28:28 -08:00
2025-07-29 19:35:46 -07:00
2025-11-10 14:38:26 -08:00
2025-07-22 17:51:38 -07:00
2025-10-23 23:08:08 -07:00
2026-01-05 10:21:49 -08:00
2025-11-10 14:38:26 -08:00
2025-11-10 14:38:26 -08:00
2025-07-20 23:04:17 -07:00
2026-01-31 16:59:03 -08:00
2026-01-28 20:24:02 -08:00
2026-02-10 10:58:21 -08:00
2025-11-10 14:38:26 -08:00
2025-11-10 19:58:02 -08:00
2026-01-07 12:33:21 -08:00
2026-02-10 10:58:21 -08:00
2025-09-26 15:19:45 -07:00
2026-01-22 04:22:45 -08:00
2025-10-29 19:29:04 -07:00
2025-11-03 22:20:07 -08:00
2025-11-10 14:38:26 -08:00
2026-02-02 23:12:21 -08:00
2025-11-20 20:56:02 -08:00
2025-07-21 13:26:47 -07:00
2025-09-26 22:21:00 -07:00
2025-11-10 14:38:26 -08:00
2025-11-10 14:38:26 -08:00
2025-07-21 13:26:47 -07:00
2025-11-10 14:38:26 -08:00
2026-01-30 16:20:45 -08:00
2026-01-23 00:24:18 -08:00
2026-01-22 04:22:45 -08:00
2025-11-10 14:38:26 -08:00
2026-01-21 13:01:25 -08:00
2025-10-23 23:08:08 -07:00
2025-11-10 14:38:26 -08:00
2026-02-08 19:49:26 -08:00
2026-01-26 10:52:35 -08:00
2025-10-04 00:31:47 -07:00
2025-11-10 14:38:26 -08:00
2025-10-02 14:11:29 -07:00
2025-11-10 14:38:26 -08:00
2025-11-10 14:38:26 -08:00
2025-07-22 17:51:38 -07:00
2025-09-09 20:41:10 -07:00
2026-01-18 13:19:30 -08:00
2025-07-09 00:19:57 -07:00
2026-01-07 22:46:51 -08:00
2025-12-17 19:56:25 -08:00
2026-01-26 10:52:35 -08:00
2026-02-09 22:03:54 -08:00
2025-11-10 14:38:26 -08:00
2025-11-10 14:38:26 -08:00
2026-02-09 22:03:54 -08:00
2025-11-10 14:38:26 -08:00
2025-12-21 17:12:42 -08:00
2025-10-23 23:08:08 -07:00
2025-12-21 17:12:42 -08:00
2026-01-16 14:18:48 -08:00
2026-01-23 00:24:18 -08:00
2025-11-10 14:38:26 -08:00
2026-01-23 00:24:18 -08:00
2025-10-18 18:14:01 -07:00
2025-11-10 14:38:26 -08:00
2025-07-22 17:51:38 -07:00
2025-09-14 04:14:48 -07:00
2026-02-09 22:03:54 -08:00
2025-11-30 23:11:33 -08:00
2026-01-30 01:38:45 -08:00
2026-01-21 13:01:25 -08:00
2025-09-30 00:10:15 -07:00
2025-12-06 16:37:09 -08:00
2025-12-01 21:59:11 -08:00
2025-11-10 14:38:26 -08:00
2025-11-13 19:29:16 -08:00
2025-09-26 15:15:58 -07:00
2026-01-14 12:52:41 -08:00
2025-11-15 16:36:15 -08:00
2026-02-09 22:03:54 -08:00
2026-02-09 22:03:54 -08:00
2025-09-03 15:40:44 -07:00
2025-09-22 19:28:26 -07:00
2025-07-21 13:26:47 -07:00
2025-11-10 14:38:26 -08:00
2026-02-10 23:04:46 -08:00
2025-11-10 14:38:26 -08:00
2026-01-21 13:01:25 -08:00
2025-07-13 04:27:43 -07:00
2025-12-15 19:50:11 -08:00
2025-12-15 19:50:11 -08:00
2026-01-20 12:47:07 -08:00
2026-02-10 22:32:31 -08:00
2025-07-21 13:26:47 -07:00
2025-09-03 15:40:44 -07:00
2025-07-25 12:38:06 -07:00
2025-11-10 14:38:26 -08:00
2026-02-09 22:03:54 -08:00
2025-10-03 17:10:28 -07:00
2025-07-21 13:26:47 -07:00
2025-12-15 13:21:41 -08:00
2025-07-21 13:26:47 -07:00
2025-11-10 14:38:26 -08:00
2026-01-14 16:46:20 -08:00
2025-07-22 17:51:38 -07:00
2025-08-11 20:19:34 -07:00
2026-01-22 04:22:45 -08:00
2025-11-30 23:11:33 -08:00
2025-07-21 13:26:47 -07:00
2025-11-10 14:38:26 -08:00
2025-07-21 13:26:47 -07:00
2025-12-18 21:42:14 -08:00