fix(jsc): disable WASM IPInt on Linux x86_64 to prevent segfaults#27341
fix(jsc): disable WASM IPInt on Linux x86_64 to prevent segfaults#27341
Conversation
Disable the JavaScriptCore WASM In-Place Interpreter (IPInt) by default on Linux x86_64 to work around an upstream JSC bug that causes segfaults in `wasm_ipint_call_wide32`. This affects 20+ reported issues (#17841). The fix is placed before env var processing so users can still re-enable IPInt with `BUN_JSC_useWasmIPInt=1` if needed. Closes #27340 Co-Authored-By: Claude <noreply@anthropic.com>
|
Updated 11:15 PM PT - Feb 21st, 2026
❌ Your commit
🧪 To try this PR locally: bunx bun-pr 27341That installs a local version of the PR into your bun-27341 --bun |
|
No actionable comments were generated in the recent review. 🎉 WalkthroughDisables the WASM In-Place Interpreter (useWasmIPInt) for Linux x86_64 in JSC initialization to address a segmentation fault issue. A regression test is added to verify that repeated WASM function calls complete without crashes and produce correct results. Changes
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
|
✅ 39d94 — Looks good! Reviewed 2 files across |
Summary
wasm_ipint_call_wide32wasm_trampoline_wasm_ipint_call_wide32crash in JSC, potentially stack overflow in WebAssembly while using PGlite #17841BUN_JSC_useWasmIPInt=1if needed (the default is set before env var processing)Background
The WASM IPInt has a known stack-check bug on Linux x86_64 (WebKit #289009) that causes segfaults during repeated WASM function calls. The upstream fix exists but is pending the WebKit upgrade in #26922. This change provides an immediate workaround by disabling IPInt, which falls back to the older (stable) WASM interpreter.
Test plan
bun bd test test/regression/issue/27340.test.tspassesBUN_JSC_useWasmIPInt=1env var override still works#ifguard ensures this only affects Linux x86_64)Closes #27340
🤖 Generated with Claude Code