SIGABRT crash: native .node addon deleted from /tmp during runtime (v2.1.42)

Resolved 💬 3 comments Opened Feb 16, 2026 by x10roissy Closed Feb 19, 2026

Bug Report

Claude Code version: 2.1.42
OS: Ubuntu 24.04.2 LTS (kernel 6.11.0-1013-oem)
Architecture: AMD x86-64
RAM: 16 GB (7.8 GB available at crash time, no memory pressure)

Description

Claude Code crashes with SIGABRT (Signal 6) when a native Node.js addon (.node file) extracted to /tmp is deleted during runtime.

Crash Details

Signal: 6 (ABRT)
Module: /tmp/.7fd7ffdf9bf9ff67-00000000.node (deleted)
Coredump size: 88.3M

Stack Trace (from coredumpctl)

#0  __pthread_kill_implementation (libc.so.6 + 0x9eb2c)
#1  __GI_raise (libc.so.6 + 0x4527e)
#2  __GI_abort (libc.so.6 + 0x2898f)
#3  (claude binary + 0x3f06b58)
#4  (claude binary + 0x59a6421)
#5  (claude binary + 0x59a2dd1)
#6  (claude binary + 0x59a2e25)
#7  (claude binary + 0x59a2163)
#8  (claude binary + 0x49b74cd)
...

Root Cause Analysis

  1. Claude Code extracts native .node addons to /tmp at startup (e.g., /tmp/.7fd7ffdf9bf9ff67-00000000.node)
  2. The file gets deleted during execution (shown as (deleted) in coredump module listing)
  3. When the runtime tries to access the addon, it triggers an assertion failure → SIGABRT

Possible Causes for File Deletion

  • Claude Code internal restart/update mechanism deleting old temp files
  • GC/fork behavior cleaning up temp files from parent process
  • External cleanup (systemd-tmpfiles, though configured for 30d retention here)

Suggested Fix

  • Use O_TMPFILE or memfd_create() to keep the file descriptor alive even if unlinked
  • Or extract addons to a persistent directory (e.g., ~/.local/share/claude/native/) instead of /tmp
  • Or add error handling for missing .node files with graceful restart instead of abort

Reproduction

  • Single occurrence so far on this system
  • Running as a long-lived process via tmux (systemd user service)
  • 15 min into session when crash occurred

Environment

  • systemd-tmpfiles-clean timer: active (30d retention on /tmp)
  • Process was running in systemd user scope
  • No OOM conditions (7.8 GB free, 0 swap used)

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗