Description
Summary
#35083 ("crash_handler(windows): let foreign first-chance AVs reach SEH via JSC unwind info") fixed the VEH-vs-SEH crash class on Windows — nProtect GameGuard (npggNT64.des), BeyondTrust PGHook.dll, AV/EDR hooks. It shipped in 1.4.0 and nothing earlier.
The problem: a large share of the users who hit this bug run Bun as an embedded runtime inside a single-file compiled executable, not as a standalone bun. For them bun upgrade is a no-op against the crash, and there is currently no version of Bun they can reach that contains the fix.
Evidence (verified today)
| Fact | Value |
|---|---|
bun-v1.3.14 released |
2026-05-13 |
#35083 merged (79ee451) |
2026-07-23 |
bun-v1.4.0 released |
2026-08-20 |
79ee451 vs bun-v1.4.0 |
behind=0 — present in 1.4.0, absent from every earlier tag |
A 1.3.15 backport |
does not exist; 1.3.14 → 1.4.0 directly |
Concrete downstream, checked on a Windows 11 machine:
- OpenCode
1.18.21— the latest release, published 2026-08-21, i.e. one day afterbun-v1.4.0— ships Bun 1.3.14.anomalyco/opencodemain pins"packageManager": "[email protected]"- Byte-scanning the shipped 179 MB
opencode.exeyields onlyBun v1.3.14/bun v1.3.14; no 1.4 string is present.
So a user crashing today has no self-service remedy: their standalone bun can be 1.4.0 while the runtime actually hosting the vectored exception handler is still 1.3.14, baked into a binary they don't build.
Ask
Either would resolve it:
-
A
1.3.15carrying just the crash_handler(windows): let foreign first-chance AVs reach SEH via JSC unwind info #35083 handler change (plus the crash_handler(windows): walk the fault CONTEXT via RtlVirtualUnwind #35074 unwind work it depends on), so downstreams pinned to 1.3.x can pick it up without taking a minor bump; or -
If backports are out of scope — an explicit note on the closed threads (Segfault at 0x3C — nProtect GameGuard (npggNT64.des) injection kills any Bun process on Windows 11 #34055, Segfault on Windows: nProtect GameGuard module (npggNT64.des) appears in crash stack — deterministic reproduction #35764, nprotect gameguard crashes bun on windows #21930, Bun segmentation fault when opening Helldivers 2 #27051, Segmentation fault at startup when EasyAntiCheat (Helldivers 2) driver is running #32444, Crash with a segmentation fault at address 0x3C #29497) and in the 1.4.0 release notes to the effect of:
If Bun is embedded in a compiled binary (
bun build --compile, or any tool that ships its own runtime), that tool must be rebuilt against Bun ≥ 1.4.0. Upgrading your standalonebuninstall does not fix this.Those closed issues are where affected users land from search, and none of them currently draw that distinction — so the reasonable conclusion a reader reaches ("it's fixed, just upgrade Bun") is wrong for exactly the population that reported it.
Secondary: pre-release "1.4.0" is making open reports ambiguous
#37304 is open, reports address 0x000000E8 — the precise CRYPTSP cmp [rcx+0E8h], 11111111h signature described in #35083's own writeup — and states Bun v1.4.0. But it was filed 2026-08-10, ten days before bun-v1.4.0 stable, so it is a pre-release build and it is unclear whether final 1.4.0 resolves it. #32586 has the same shape (filed 2026-06-22, also labelled "Bun v1.4.0").
It may be worth asking both reporters for bun --revision and a re-test on stable, since right now those threads can't distinguish "fix didn't work" from "fix wasn't in that build" — and #35083 does flag one known remaining gap (LLInt frames not covered by the static .pdata lookup, noted as a follow-up).
Version
Bun v1.3.14 (standalone) and Bun v1.3.14 (embedded in OpenCode 1.18.21) on Windows 11 26100, x64.
Activity
nyecov commentedon Aug 23, 2026
Downstream tracking issue now filed against the affected consumer: anomalyco/opencode#44513.
That thread confirms the reach problem concretely — OpenCode's tracker had no prior report of this crash class at all, despite Bun's having six (#34055, #35764, #21930, #27051, #32444, #29497). Users correctly identify Bun as the crashing component and file here, while the version pin that actually blocks the fix lives downstream.