[BUG] Illegal instruction crash on CPU below SSE4.2/POPCNT baseline (not just AVX)

Status Open
Reported on v2.0.76
Maintainer reply None cached
Activity 3 comments · opened Aug 10, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

What's Wrong?

Native installer and CLI crash with "Illegal instruction (core dumped)" on a CPU that lacks SSE4.2/POPCNT (not just AVX). This is distinct from the known AVX-only regression (#19907 and duplicates) — my CPU is below the x86-64-v2 baseline that even Bun's "baseline" build assumes, so no Bun-compiled version works, including older pins like 2.0.76.

What Should Happen?

What Should Happen?

Claude Code should either run correctly (via a true x86-64-v1 baseline build) or fail with a clear, actionable error message instead of SIGILL.

Workaround (tested and confirmed working)

Extracting cli.js from the last pre-2.1.113 npm tarball (before the switch to a fully Bun-compiled binary) and running it via Node.js directly works without issue on this hardware, including a full interactive session (login, prompting, clean exit, restart):

mkdir -p /tmp/claude-install && cd /tmp/claude-install
npm pack @anthropic-ai/claude-code@2.1.108
tar xf anthropic-ai-claude-code-2.1.108.tgz
mkdir -p ~/.local/share/claude-node
cp -r package/* ~/.local/share/claude-node/
# wrapper at ~/.local/bin/claude:
# exec node "$HOME/.local/share/claude-node/cli.js" "$@"

claude --version and a full interactive session both work correctly on 2.1.108 via this method.

Ask

Please consider either:

  1. Shipping a true CPU-baseline (x86-64-v1) build alongside the AVX/SSE4.2 builds, or
  2. Documenting/supporting the Node.js cli.js fallback officially for hardware below the Bun baseline.

Error Messages/Logs

### Environment
- CPU: Intel Xeon X3363 (Harpertown/Penryn, 2008)
- CPU flags: mmx fxsr sse sse2 ssse3 sse4_1 (no sse4_2, no popcnt, no avx)
- OS: Linux (Ubuntu/Debian-based)

### Error Output
    curl -fsSL https://claude.ai/install.sh | bash
    Setting up Claude Code...
    bash: line 183: 1033129 Illegal instruction (core dumped) "binary_path" install ${TARGET:+" TARGET"}

Same result when pinning explicitly to 2.0.76:

    curl -fsSL https://claude.ai/install.sh | bash -s 2.0.76
    Setting up Claude Code...
    bash: line 183: 1033457 Illegal instruction (core dumped) "binary_path" install ${TARGET:+" TARGET"}
    Installation was killed before it could finish (exit code 132).

Steps to Reproduce

  1. Use a machine with a CPU that lacks SSE4.2/POPCNT support (e.g. Intel Xeon X3363 "Harpertown", 2008-era). Confirm via: cat /proc/cpuinfo | grep flags — flags will include ssse3 and sse4_1 but not sse4_2 or popcnt.
  2. Run the native installer: curl -fsSL https://claude.ai/install.sh | bash
  3. Observe the crash: "Illegal instruction (core dumped)" during "Setting up Claude Code..."
  4. To confirm it isn't the known AVX-only regression, retry pinned to an older version: curl -fsSL https://claude.ai/install.sh | bash -s 2.0.76
  5. Observe the identical crash, showing the issue predates and is broader than the AVX regression fixed in later versions.

Workaround verified to avoid the crash:

  1. mkdir -p /tmp/claude-install && cd /tmp/claude-install
  2. npm pack @anthropic-ai/claude-code@2.1.108
  3. tar xf anthropic-ai-claude-code-2.1.108.tgz
  4. node package/cli.js --version — this succeeds and prints "2.1.108 (Claude Code)" with no crash, confirming the pre-Bun-binary JS build runs fine via Node.js on the same hardware where the compiled binary fails.

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

Unknown / not applicable — this doesn't appear to be a regression from a specific version. Every Bun-compiled build tested (current latest and 2.0.76) crashes identically, since the CPU falls below the SSE4.2/POPCNT baseline all recent Bun binaries require. It's possible an older pre-Bun release (before Claude Code moved to compiled binaries) worked natively, but that wasn't tested here.

Claude Code Version

2.1.108 (via Node.js workaround — see description). The native/Bun-compiled installer crashes on this hardware for every version tested (latest, and pinned 2.0.76), so claude --version could never be run against a native install.

Platform

Anthropic API

Operating System

Ubuntu/Debian Linux

Terminal/Shell

iTerm2

Additional Information

Claude [Sonnet 5] web session developed this workaround, confirmed there were no open issues that this duplicates, and wrote the text for this issue.

View original on GitHub ↗

3 Comments

ppannuto · 20 days ago

Follow-up: found a second, related issue with the Node.js workaround above.

After setting up the ~/.local/bin/claude wrapper (pointing to the pre-2.1.113 cli.js via Node), the ~/.local/bin directory would periodically get emptied — losing the wrapper script — with the workaround otherwise continuing to function fine once the wrapper was recreated.

Root cause appears to be the auto-updater: it seems to run on exit (or in the background), attempt to install a fresh native binary into ~/.local/bin, hit the same SIGILL crash described above, and leave the directory cleared rather than failing gracefully or preserving the existing install.

Setting DISABLE_AUTOUPDATER=1 in the environment stops the wipe entirely — the wrapper now persists across sessions.

This seems worth calling out separately: even for someone who works around the initial install crash, the auto-updater will silently destroy that workaround on unsupported hardware unless updates are explicitly disabled. Might be worth either (a) having the updater detect this SIGILL failure mode and skip/report rather than clearing the target directory, or (b) auto-disabling the updater when running via the Node.js fallback path.

ppannuto · 20 days ago

Follow-up with a more precise version boundary and an upgrade from the original workaround.

Confirmed the exact cutoff: v2.1.112 is the last version with a genuine cli.js JS build; v2.1.113 replaced it with cli-wrapper.cjs, which only spawns the native (Bun-compiled) binary rather than providing an actual Node.js fallback:

$ tar xf anthropic-ai-claude-code-2.1.113.tgz && node package/cli-wrapper.cjs --version
[@anthropic-ai/claude-code] Could not find native binary package "@anthropic-ai/claude-code-linux-x64".
  Try reinstalling with: npm install

Even with the native binary present, this would hit the same SIGILL crash described above, since it's the same Bun-compiled executable — cli-wrapper.cjs is a thin spawner, not an alternate runtime.

Updated workaround: I've since moved from 2.1.108 to 2.1.112 (the actual ceiling) using the same node cli.js approach, and confirmed it works. So 2.1.112 is the recommended pin for anyone on hardware below the Bun baseline until this is fixed upstream, not 2.1.108.

genose · 12 days ago

Related fix — replacing bun with esbuild entirely:

I've been running Claude Code on an Intel Xeon X5690 (Westmere-EP, 2010) with no AVX, no AVX2, no SSE4.2 and got it working by replacing bun with esbuild in the build toolchain. esbuild is a pure Go binary with no ISA extension requirements at all.

Your Node.js cli.js fallback (extracting from old npm tarball) works for similar reasons — it avoids bun entirely. The esbuild source-build approach gives you the same result but against the current version.

Repo: https://github.com/genose\/claude-code-source-build-community-edition-noAVX-foroldtimer (branch: noavx_esbuild)

This complements your ask: the real fix from Anthropic’s side would be to either keep a Node.js cli.js path or ship a true x86-64-v1 compatible binary. Both workarounds confirm the code itself runs fine — it’s purely a bun binary baseline problem.

---
Quick install (installs as claudius command):

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/genose/claude-code-source-build-community-edition-noAVX-foroldtimer/noavx_esbuild/install.sh | bash

Windows (PowerShell):

irm https://raw.githubusercontent.com/genose/claude-code-source-build-community-edition-noAVX-foroldtimer/noavx_esbuild/install.ps1 | iex
claudius --version output: `` 2.1.88 (Claude Code — Community Edition no-AVX / old-timer) Patched by genose.org · github.com/genose/claude-code-source-build-community-edition-noAVX-foroldtimer Assisted by a custom no-AVX build of Claude Code itself — cheers Anthropic, heavily paid to drop old-timer CPU support 👴🖥️ ``

Fork PR (docs): https://github.com/genose/claude-code/pull/1