Node.js v24.15.0: native crash (exit code 57005/0xDEAD) during npm ci on Windows
#62.991 geöffnet am 27. Apr. 2026
Beschreibung
Summary
node.exe v24.15.0 intermittently crashes with a native fault during npm ci tarball extraction on Windows. The crash produces exit code 57005 (0xDEAD). v24.14.1 is not affected.
Environment
- OS: Windows Server 2025 (10.0.26100) — Azure DevOps CI agents (
windows.vs2026preview.scout.amd64.open) - Node: v24.15.0 (crashes), v24.14.1 (no crashes)
- npm: 11.12.1 (bundled with 24.15.0)
- CPU: AMD64, Standard_D4a_v4 (4 vCPU, 16GB RAM)
- Disk: ~147GB free (not a space issue)
Reproduction
The crash occurs during npm ci in the dotnet/aspnetcore repository, which has ~1400 npm dependencies. The crash happens during the tarball extraction phase (after all packages are downloaded from the registry).
- Frequency: ~43% of Windows CI builds over a 10-day period
- Linux/macOS: Never observed — Windows only
- First occurrence: Build 1381847, queued 2026-04-16T11:37:14Z — approximately 4 hours after v24.15.0 was published
- Zero crashes on v24.14.1 across hundreds of builds
Crash Evidence
Windows Event Log (Application Error, ID 1000)
Faulting application name: node.exe, version: 24.15.0.0
Faulting module name: (empty)
Exception code: 0x...
Faulting process id: 2e0c
Faulting application path: C:\ToolCache\node\24.15.0\x64\node.exe
Report Id: d4db47fc-5298-47bc-a98f-13aebaa4d464
This confirms a native-level crash in node.exe, not a JavaScript exception.
npm debug log analysis
Across multiple independent crashes, the npm debug log is truncated at exactly the same file size (518,908 bytes with maxsockets=15, 868,502 bytes with maxsockets=10). The log ends mid-extraction at the silly tarball phase — different packages each time, but identical byte count. This suggests the process hits a deterministic resource threshold before being killed.
What we ruled out
- Disk space: 147GB free on all crashed agents
- Windows Defender:
RealTimeProtectionEnabledis disabled on CI agents - JavaScript-level crash:
NODE_OPTIONS=--report-uncaught-exceptionproduced no report — the crash bypasses JS error handling - npm-level error: No npm error output, no
.npmrcissues - Network: All packages downloaded successfully (cache hits), crash happens during extraction
Suspected changes in v24.15.0
The crash is in the native layer during buffer-heavy tarball extraction. Potentially relevant changes between v24.14.1 and v24.15.0:
buffer: disallow ArrayBuffer transfer on pooled buffer— https://github.com/nodejs/node/pull/61372 — Changes buffer transfer lifecycle; npm extraction is extremely buffer-intensive- V8 cherry-pick related to the buffer change — https://github.com/nodejs/node/pull/62567
- npm 11.11.0 → 11.12.1 upgrade — https://github.com/nodejs/node/pull/62448 — Though the crash is in
node.exe, not npm JS code
Workaround
We pinned to Node.js v24.14.1 in our CI pipeline (dotnet/aspnetcore#66465). Zero crashes since the pin.
Example CI builds
- Crash (v24.15.0): https://dev.azure.com/dnceng-public/public/_build/results?buildId=1396126 — Event Log captured
- Pass (v24.14.1): https://dev.azure.com/dnceng-public/public/_build/results?buildId=1396309 — same codebase, pinned version