Skip to content

Node.js v24.15.0: native crash (exit code 57005/0xDEAD) during npm ci on Windows #62991

@wtgodbe

Description

@wtgodbe

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: RealTimeProtectionEnabled is disabled on CI agents
  • JavaScript-level crash: NODE_OPTIONS=--report-uncaught-exception produced no report — the crash bypasses JS error handling
  • npm-level error: No npm error output, no .npmrc issues
  • 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:

  1. buffer: disallow ArrayBuffer transfer on pooled bufferbuffer: disallow ArrayBuffer transfer on pooled buffer #61372 — Changes buffer transfer lifecycle; npm extraction is extremely buffer-intensive
  2. V8 cherry-pick related to the buffer change[v24.x] deps: V8: cherry-pick 33e7739c134d #62567
  3. npm 11.11.0 → 11.12.1 upgradedeps: upgrade npm to 11.12.1 #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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions