Skip to content

feat(inspector): runtime activation via SIGUSR1 / process._debugProcess - #34106

Closed
robobun wants to merge 17 commits into
mainfrom
farm/c42486d7/runtime-inspector-v2
Closed

feat(inspector): runtime activation via SIGUSR1 / process._debugProcess#34106
robobun wants to merge 17 commits into
mainfrom
farm/c42486d7/runtime-inspector-v2

Conversation

@robobun

@robobun robobun commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator

Implements Node.js-compatible runtime inspector activation: kill -USR1 <pid> (or process._debugProcess(pid)) attaches Chrome DevTools to a running Bun process, including one stuck in while (true) {}.

Rework of #26867, ported to the Rust runtime with a simpler architecture.

Architecture

SIGUSR1 (signal context, async-signal-safe only)
  └─ sem_post

SignalInspector thread (normal context)
  └─ sets activation flag
  └─ vm.notifyNeedDebuggerBreak()   [CONCURRENT_SAFE, sets trap bit]
  └─ event_loop.wakeup()            [for idle VMs]

JSC SignalSender (internal, retries every 1ms)
  └─ patches InvalidationPoints in DFG/FTL code to halts

VMTraps::handleTraps(NeedDebuggerBreak) on JS thread
  └─ invalidateCodeBlocksOnStack + per-VM callback

onDebuggerTrap (BunDebugger.cpp)
  ├─ activate inspector if requested (spawn debugger thread, print banner)
  ├─ drain queued CDP messages for this VM
  └─ if a pause was requested: debugger->breakProgram() → runWhilePaused

Compared to #26867 this drops StopTheWorld, STW_CONTEXT_SWITCH, the pauseFlags state machine, bootstrap-pause synthetic events, and the weak-symbol hooks. Only the target VM is interrupted; the debugger thread never blocks.

Trap delivery

op_check_traps is emitted at every loop back-edge. LLInt and Baseline JIT poll m_trapBits there directly. DFG and FTL compile it to an InvalidationPoint (NodeMustGenerate, survives optimization), which JSC's SignalSender patches to a halt from another thread, retrying every 1 ms until the trap is handled. This makes delivery reliable across all tiers without usePollingTraps.

Node.js behaviors matched

  • SIGUSR1 activates the inspector (POSIX)
  • process._debugProcess(pid) sends SIGUSR1 on POSIX, uses a bun-debug-handler-<pid> file mapping + CreateRemoteThread on Windows
  • --inspect-port=<port> pre-configures the port (0 for random)
  • --disable-sigusr1 leaves SIGUSR1 at its default action
  • A user process.on('SIGUSR1', ...) listener takes precedence
  • Debugger.pause interrupts tight loops

WebKit dependency

Requires oven-sh/WebKit#287:

  • VM::setDebuggerTrapCallback(fn): per-VM hook invoked from handleTraps(NeedDebuggerBreak) on the VM's owning thread at a safe point
  • Debugger::attach() idempotent under USE(BUN_JSC_ADDITIONS)
  • DebuggerCallFrame::scope() ignores the scope register when the frame was not compiled with debugger opcodes
  • JSGlobalObjectInspectorController::disconnectFrontend() defers agent teardown until the last frontend disconnects

WEBKIT_VERSION is pinned to the preview build for now; once #287 merges the pin moves to the resulting autobuild-<sha>.

Verification

$ bun bd test test/js/bun/runtime-inspector/runtime-inspector.test.ts
(pass) activates inspector in target process
(pass) throws error for non-existent process
(pass) throws when called with no arguments
(pass) can pause execution during while(true) via CDP
(pass) --disable-sigusr1 prevents inspector activation
 5 pass / 0 fail

$ USE_SYSTEM_BUN=1 bun test test/js/bun/runtime-inspector/runtime-inspector.test.ts
 1 pass / 8 fail

On FreeBSD (and any platform where JSC's GC suspend/resume signal is SIGUSR1) the handler is not installed so GC stack scanning is unaffected.

Closes #26867.

Co-authored-by: Alistair Smith hi@alistair.sh


no test proof · iteration 8 · Platform-specific test(s) that do not run on this machine. Deferring to CI, which covers all platforms: test/js/bun/runtime-inspector/runtime-inspector-posix.test.ts test/js/bun/runtime-inspector/runtime-inspector-windows.test.ts test/js/bun/runtime-inspector/runtime-inspector.test.ts test/js/node/process/process.test.js

@robobun

robobun commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator Author
Updated 8:35 PM PT - Jul 15th, 2026

@robobun, your commit 807d3d7 has 2 failures in Build #73549 (All Failures):


🧪   To try this PR locally:

bunx bun-pr 34106

That installs a local version of the PR into your bun-34106 executable, so you can run:

bun-34106 --bun

Comment thread src/jsc/event_loop.rs
@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Changes

Runtime inspector activation is added through SIGUSR1 on POSIX and process._debugProcess(pid) on Windows and POSIX. Configuration flows through CLI and VM initialization, debugger traps deliver CDP traffic during busy execution, and platform-specific integration tests cover activation and reconnect behavior.

Runtime inspector activation

Layer / File(s) Summary
Inspector configuration and boot wiring
src/options_types/context.rs, src/runtime/cli/*, src/jsc/VirtualMachine.rs, src/runtime/jsc_hooks.rs, src/jsc/lib.rs
Adds --inspect-port and --disable-sigusr1, forwards them into VM initialization, and configures SIGUSR1 handling during runtime startup.
Activation request and platform delivery
src/jsc/RuntimeInspector.rs, src/jsc/event_loop.rs, src/jsc/bindings/vm/Semaphore.cpp, scripts/build/deps/webkit.ts
Adds inspector activation state and creation, POSIX semaphore and signal handling, Windows file-mapping delivery, event-loop activation checks, semaphore interruption retries, and the updated WebKit build tag.
Debugger trap and CDP delivery
src/jsc/bindings/BunDebugger.cpp
Adds runtime activation state, debugger trap callbacks, pause-loop coordination, inspector attachment, and queued CDP message delivery.
Process activation entry points
src/jsc/bindings/BunProcess.cpp
Implements process._debugProcess(pid), sends SIGUSR1 or starts a Windows remote thread, and removes the runtime SIGUSR1 handler when user listeners are registered.
Runtime inspector validation
test/js/bun/runtime-inspector/*, test/js/node/process/process.test.js
Adds POSIX, Windows, CDP, busy-loop, duplicate-activation, sequential-process, disabled-signal, and argument-validation coverage, while removing _debugProcess from the undefined stub list.

Suggested reviewers: jarred-sumner

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR implements the linked issue requirements: POSIX SIGUSR1 activation, Windows activation, busy-loop support, CDP pause, port control, and SIGUSR1 handling.
Out of Scope Changes check ✅ Passed The changes stay focused on runtime inspector activation and its required WebKit and test updates, with no clear unrelated additions.
Title check ✅ Passed The title clearly summarizes the main change: runtime inspector activation via SIGUSR1 and process._debugProcess.
Description check ✅ Passed The description covers the PR purpose and verification, though it does not use the template's exact section headings.

Comment @coderabbitai help to get the list of available commands.

Comment thread test/js/bun/runtime-inspector/runtime-inspector-posix.test.ts Outdated
Comment thread src/jsc/RuntimeInspector.rs
Comment thread src/jsc/bindings/BunProcess.cpp
Comment thread test/js/bun/runtime-inspector/runtime-inspector.test.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/jsc/bindings/BunProcess.cpp`:
- Around line 4290-4361: Update Process_functionDebugProcess to use
throwSystemError for all platform-specific failures instead of plain
throwVMError strings, matching the structured error behavior of
Process_functionKill. Preserve the existing failure conditions and messages
while supplying the appropriate underlying system error codes so callers can
branch on error.code.
- Around line 4313-4357: Synchronize the debug-handler handoff between the
mapping publisher and the Windows reader in the relevant debug-thread setup code
and the shown OpenFileMappingW path. Ensure the named mapping is not published,
or is not consumed, until start_debug_thread_proc has been written and a ready
state is visible; have the reader validate readiness before calling
CreateRemoteThread, preserving the existing cleanup and error paths.

In `@src/jsc/RuntimeInspector.rs`:
- Around line 370-415: Update the install function around CreateFileMappingW and
MAPPING_HANDLE.store so the named mapping is not discoverable until
start_debug_thread_proc has been written and the view unmapped. Ensure
concurrent process._debugProcess(pid) callers cannot observe an uninitialized or
null threadProc, while preserving the existing failure cleanup behavior.

In `@src/runtime/cli/run_command.rs`:
- Around line 961-966: Update boot_standalone’s InitOptions construction to
forward ctx.runtime_options.disable_sigusr1 and ctx.runtime_options.inspect_port
into VirtualMachine::init_with_module_graph, preserving the existing cli_dupe
conversion for the optional inspect port.

In `@src/runtime/jsc_hooks.rs`:
- Line 525: Add an adjacent `// SAFETY:` comment before the inline unsafe
expression in the `debugger` branch, explaining why dereferencing `vm` is valid
at that point. Keep the condition and surrounding control flow unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: d49ba7f0-af84-4abe-a0f3-2944484a65f5

📥 Commits

Reviewing files that changed from the base of the PR and between 5098c8d and b03ae3d.

📒 Files selected for processing (18)
  • scripts/build/deps/webkit.ts
  • src/jsc/RuntimeInspector.rs
  • src/jsc/VirtualMachine.rs
  • src/jsc/bindings/BunDebugger.cpp
  • src/jsc/bindings/BunProcess.cpp
  • src/jsc/bindings/vm/Semaphore.cpp
  • src/jsc/event_loop.rs
  • src/jsc/lib.rs
  • src/options_types/context.rs
  • src/runtime/cli/Arguments.rs
  • src/runtime/cli/repl_command.rs
  • src/runtime/cli/run_command.rs
  • src/runtime/cli/test_command.rs
  • src/runtime/jsc_hooks.rs
  • test/js/bun/runtime-inspector/runtime-inspector-posix.test.ts
  • test/js/bun/runtime-inspector/runtime-inspector-windows.test.ts
  • test/js/bun/runtime-inspector/runtime-inspector.test.ts
  • test/js/node/process/process.test.js
💤 Files with no reviewable changes (1)
  • test/js/node/process/process.test.js

Comment thread src/jsc/bindings/BunProcess.cpp
Comment thread src/jsc/bindings/BunProcess.cpp
Comment thread src/jsc/RuntimeInspector.rs
Comment thread src/runtime/cli/run_command.rs
Comment thread src/runtime/jsc_hooks.rs
Comment thread src/runtime/cli/Arguments.rs
Comment thread test/js/bun/runtime-inspector/runtime-inspector-posix.test.ts Outdated
Comment thread src/jsc/bindings/BunProcess.cpp
Comment thread test/js/bun/runtime-inspector/runtime-inspector-posix.test.ts Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/jsc/bindings/BunProcess.cpp (1)

1575-1581: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Restore the SIGUSR1 inspector handler on listener removal. src/jsc/bindings/BunProcess.cpp uninstalls the runtime-inspector SIGUSR1 handler when a user listener is added, but there’s no matching reinstall when the last listener is removed, so SIGUSR1 activation stays disabled for the rest of the process.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/jsc/bindings/BunProcess.cpp` around lines 1575 - 1581, Update the SIGUSR1
listener-removal path near Bun__Sigusr1Handler__uninstall() to reinstall the
runtime-inspector SIGUSR1 handler when the final user listener is removed.
Preserve the existing uninstall behavior while a user listener remains active,
and invoke the established inspector-handler installation mechanism only after
listener removal leaves no user handler.
test/js/bun/runtime-inspector/runtime-inspector-windows.test.ts (1)

12-36: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Same timer-leak issue as runtime-inspector-posix.test.ts.

This readStreamUntil is an identical copy of the one in the POSIX test file and shares the same unhandled-rejection risk from the never-cleared timeout promise. See the consolidated comment for the fix.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/js/bun/runtime-inspector/runtime-inspector-windows.test.ts` around lines
12 - 36, Update the Windows test helper readStreamUntil to clear or otherwise
settle the timeout created for each read race once the stream condition is met
or the reader completes, matching the fix applied to the POSIX test helper and
preventing leftover timer rejections.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/js/bun/runtime-inspector/runtime-inspector-posix.test.ts`:
- Around line 12-31: Update readStreamUntil to retain the timeout handle and
ensure it is cleared when the stream condition is met or reader.read() fails.
Also attach handling for the timeout promise’s rejection so the losing promise
cannot produce an unhandled rejection after successful completion.

---

Outside diff comments:
In `@src/jsc/bindings/BunProcess.cpp`:
- Around line 1575-1581: Update the SIGUSR1 listener-removal path near
Bun__Sigusr1Handler__uninstall() to reinstall the runtime-inspector SIGUSR1
handler when the final user listener is removed. Preserve the existing uninstall
behavior while a user listener remains active, and invoke the established
inspector-handler installation mechanism only after listener removal leaves no
user handler.

In `@test/js/bun/runtime-inspector/runtime-inspector-windows.test.ts`:
- Around line 12-36: Update the Windows test helper readStreamUntil to clear or
otherwise settle the timeout created for each read race once the stream
condition is met or the reader completes, matching the fix applied to the POSIX
test helper and preventing leftover timer rejections.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: e4707f58-25a6-4a70-bbe1-72a3353bb479

📥 Commits

Reviewing files that changed from the base of the PR and between b03ae3d and 946a63b.

📒 Files selected for processing (5)
  • src/jsc/RuntimeInspector.rs
  • src/jsc/bindings/BunProcess.cpp
  • test/js/bun/runtime-inspector/runtime-inspector-posix.test.ts
  • test/js/bun/runtime-inspector/runtime-inspector-windows.test.ts
  • test/js/bun/runtime-inspector/runtime-inspector.test.ts

Comment thread test/js/bun/runtime-inspector/runtime-inspector-posix.test.ts Outdated
Comment thread src/runtime/jsc_hooks.rs
Comment thread src/jsc/VirtualMachine.rs

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/js/bun/runtime-inspector/runtime-inspector-posix.test.ts`:
- Around line 22-41: Extract the duplicated readStreamUntil and hasBanner
helpers into a shared runtime-inspector harness module, preserving the existing
timer cleanup behavior. In
test/js/bun/runtime-inspector/runtime-inspector-posix.test.ts lines 22-41, move
the helpers to the shared module and import them; in
test/js/bun/runtime-inspector/runtime-inspector-windows.test.ts lines 22-41,
remove the duplicate implementations and import the same helpers.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 194f9c48-8c27-4ab6-b207-14b51c056c46

📥 Commits

Reviewing files that changed from the base of the PR and between 946a63b and fb3d21d.

📒 Files selected for processing (7)
  • src/jsc/RuntimeInspector.rs
  • src/jsc/bindings/BunProcess.cpp
  • src/runtime/jsc_hooks.rs
  • test/js/bun/http/serve-response-stream-sink-leak.test.ts
  • test/js/bun/runtime-inspector/runtime-inspector-posix.test.ts
  • test/js/bun/runtime-inspector/runtime-inspector-windows.test.ts
  • test/js/bun/runtime-inspector/runtime-inspector.test.ts
💤 Files with no reviewable changes (1)
  • src/jsc/RuntimeInspector.rs

Comment thread test/js/bun/runtime-inspector/runtime-inspector-posix.test.ts
Comment thread src/jsc/RuntimeInspector.rs
Comment thread test/js/bun/runtime-inspector/runtime-inspector-posix.test.ts
Comment thread test/js/bun/runtime-inspector/runtime-inspector.test.ts Outdated
Comment thread test/js/bun/runtime-inspector/runtime-inspector-posix.test.ts
Comment thread test/js/bun/http/serve-response-stream-sink-leak.test.ts Outdated
Comment thread src/jsc/RuntimeInspector.rs
Comment thread test/js/bun/runtime-inspector/runtime-inspector-windows.test.ts Outdated
Comment thread src/jsc/bindings/BunDebugger.cpp
Comment thread src/jsc/bindings/BunDebugger.cpp
@robobun

robobun commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator Author

CI status at 807d3d7 (build #73549, rebased onto main 8215078): the new runtime-inspector tests pass on every lane that has reported. Remaining failures are unrelated to this diff:

  • test/bundler/transpiler/transpiler.test.js: var x vs let x in enum transpile output; also failing on unrelated PR builds #73563/#73561/#73560/#73558. Being handled separately as a main break.
  • test/js/node/net/net-mongodb-pattern-leak.test.ts, test/js/bun/s3/s3.test.ts (Cloudflare R2 outage), test/js/node/test/parallel/test-repl-close.js: pre-existing flakes.

The WebKit bump (autobuild-preview-pr-287-9af52a72) is now a single commit on top of main's WebKit pin (4895f45d) carrying only the 49-line setDebuggerTrapCallback patch.

Deferred to a follow-up (tracked in resolved review threads):

  • isStepping() conflation with step-over in onDebuggerTrap (restore the isPauseAtNextOpportunitySet() accessor)
  • disconnect() missing the trap tail for busy-loop targets
  • jsc_vm cross-thread read should be AtomicPtr
  • Bun__ensureDebugger not called on the Wait::Off path (pre-existing, also affects bare --inspect)
  • SIGUSR1 handler not reinstalled on add-then-remove-listener
  • Docs for --inspect-port / --disable-sigusr1
  • Extract readStreamUntil into a shared test helper
  • --compile-exec-argv='--disable-sigusr1' not forwarded to standalone binaries

robobun and others added 15 commits July 16, 2026 01:29
Port of #26867 to the Rust runtime with a simplified architecture:
SIGUSR1 posts to an async-signal-safe semaphore; a dedicated thread fires
notifyNeedDebuggerBreak on the main VM; JSC's SignalSender interrupts the
VM (all tiers via InvalidationPoint patching) and VMTraps::handleTraps
invokes a per-VM callback that activates the inspector and, when a pause
is requested, enters Debugger::breakProgram().

Requires oven-sh/WebKit#287 (VM::setDebuggerTrapCallback + idempotent
Debugger::attach + DebuggerCallFrame scope guard + disconnectFrontend
ordering).
…cache rollback

- install_debugger_trap_callback moved to request_inspector_activation()
  (init_runtime_state fires before vm.jsc_vm is written; the previous
  call passed a null VM*).
- configure_sigusr1_handler bails when g_wtfConfig.sigThreadSuspendResume
  is SIGUSR1 (FreeBSD), so the GC suspend/resume handler is left intact.
- activate_inspector disables the runtime transpiler cache only after
  Debugger::create succeeds.
- Un-skip the CDP pause test and drop the ASAN skip on basic activation.
… fixes

- Process_functionDebugProcess now throws ERR_MISSING_ARGS / INVALID_ARG_VALUE
  and a system error with .code/.syscall on kill() failure.
- Free the semaphore if the SignalInspector thread fails to spawn.
- Drop exact-empty-stderr assertions (ASAN/debug builds emit benign output).
- readStreamUntil races each read() against the timeout so a silent child
  still fails with the accumulated output.
- Windows _debugProcess: throwSystemError with uv_translate_sys_error for
  all Win32 failures; reject null threadProc (install race) as ENOENT.
- jsc_hooks: SAFETY comment for the debugger.is_some() unsafe.
- RuntimeInspector: drop the dead Windows uninstall() (file-mapping stays
  for process lifetime; no POSIX-style user-listener uninstall on Windows).
- runtime-inspector-windows.test.ts: drain the existing stderr reader to
  EOF instead of .text() on an already-locked stream.
- runtime-inspector-posix.test.ts: use --inspect=0 / --inspect-wait=0 /
  --inspect-brk=0 to avoid port 6499 collisions; make the self-signal test
  actually self-signal via setImmediate.
- Windows _debugProcess: throw plain Error with the FormatMessageW string
  (matches Node's winapi_strerror; fixes test-debug-process.js).
- Un-skip the infinite-loop banner test; add per-step 20s timeouts to the
  CDP pause test so a hang reports which step rather than a blank 60s.
- serve-response-stream-sink-leak: widen slack to 3 MB. The WebKit bump in
  this PR carries the PerformPromiseThenOneHandler async-context bailout
  (oven-sh/WebKit 234d8b38), which nudges per-request commit slightly
  above the previous 2 MB threshold on Windows.
The CDP pause test times out on x64-asan release waiting for the
Debugger.paused event (after all CDP responses arrive). The banner-only
infinite-loop test covers trap delivery on ASAN; release lanes cover the
full CDP pipeline.

Also replace the 128+signum exit-code assertion with signalCode as per
the repo convention.
The previous pin carried oven-sh/WebKit 234d8b38
(PerformPromiseThenOneHandler async-context bailout), which increased
per-promise allocation enough to trip serve-response-stream-sink-leak,
node-net connect-leak, and the binary-size check. Rebase the WebKit
branch back onto Bun main's current WebKit pin (c9ad5813) with just the
cmake 4.4 quoting fix cherry-picked on top, so the bump carries only the
49-line setDebuggerTrapCallback patch.

Also:
- Revert the serve-response-stream-sink-leak threshold widen (no longer
  needed).
- runtime-inspector-windows: make the self-debug test actually call
  _debugProcess(process.pid) on itself, mirroring the POSIX self-signal
  fix.
robobun added 2 commits July 16, 2026 01:29
Bun's signalCode name lookup maps macOS's SIGUSR1 (30) to SIGPWR (the
Linux name for 30), so assert on the numeric exit code derived from
os.constants instead.
…45d)

Main bumped WEBKIT_VERSION to 4895f45d in #34009. Re-rebase
oven-sh/WebKit#287 onto that commit (previously it was c9ad5813 with the
cmake fix cherry-picked) so the preview build matches main's WebKit plus
just the 49-line setDebuggerTrapCallback patch.

Resolved conflicts in serve-response-stream-sink-leak.test.ts by taking
main's version (the threshold widen in this PR was reverted anyway).
@alii

alii commented Aug 10, 2026

Copy link
Copy Markdown
Member

@robobun get this mergable in a new pr, close this one

@robobun

robobun commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator Author

Working on it. Will squash into a clean branch, address the deferred follow-ups from review, and open a new PR. This one will be closed once the replacement is up.

@robobun

robobun commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator Author

Superseded by #37336: same design, rebased as a single commit on current main, with the follow-ups from this review folded in (pause-vs-step distinction, disconnect on busy targets, SIGUSR1 hand-back, standalone binaries, docs, shared test helpers, and reuse of the new inspector.open() start path). oven-sh/WebKit#287 has been rebased to match.

@robobun robobun closed this Aug 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants