anthropics / anthropics/claude-code

[BUG] Segmentation fault (SIGSEGV) on install and startup — CachyOS Linux

Open
#89,377 8 comments 6 reactions 0 assignees View on GitHub
area:core area:installation bug duplicate platform:linux regression
Dominant language
Python
Stars
145k
Forks
23.1k
PR merge metrics
PR metrics pending

Description

### Preflight Checklist

- [x] I have searched [existing issues](https://github.com/anthropics/claude-code/issues?q=is%3Aissue%20state%3Aopen%20label%3Abug) 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?

Both the native installer's own install step and every subsequent invocation of `claude` crash immediately with a segmentation fault (exit code 139). The crash is fully deterministic — it happens at the exact same instruction pointer address (`ip 0000000001d10458`) across separate runs. `error 4` decodes to a user-mode read of an unmapped page (null pointer dereference) at address 0 — not random memory corruption, but something specific to this environment.

Claude Code is built on Bun (JavaScriptCore engine). Segfaults at address 0x0 on startup are a known crash pattern in Bun/JSC, usually tied to JIT code generation or memory-mapping assumptions that don't hold on non-standard kernels. CachyOS ships a custom kernel/scheduler (BORE) and distro-level compiler optimizations that differ from mainstream distros (Ubuntu/Fedora/Debian), which may conflict with how the JIT allocates executable memory (W^X / RWX mappings). Disabling the JIT via `BUN_JSC_useJIT=0` did not prevent the crash, ruling out the most common JIT-specific workaround.

### What Should Happen?

Installer completes and `claude --version` / `claude doctor` run normally.

### Error Messages/Logs

```shell
Installer output:

Setting up Claude Code...
bash, linha 226: 7226 Falha de segmentação (imagem do núcleo gravada) "$binary_path" install ${TARGET:+"$TARGET"}
Installation was killed before it could finish (exit code 139).

dmesg output (two separate crashes, same instruction pointer both times):

[ 32.510354] claude[2745]: segfault at 0 ip 0000000001d10458 sp 00007ffc9cb40960 error 4 in 2.1.243[1b0f458,1953000+3b33000] likely on CPU 9 (core 4, socket 0)
[ 32.510367] Code: cc cc 55 48 89 e5 48 89 fe 48 8b 05 82 19 78 03 48 89 f9 48 c1 e9 1d 48 8b 84 c8 80 00 00 00 89 f1 c1 e9 0d 81 e1 f8 ff 00 00 <48> 8b 3c 08 48 85 ff 74 1e 48 8b 07 64 48 33 04 25 00 00 00 00 75

[ 652.461011] claude-2.1.243-[7226]: segfault at 0 ip 0000000001d10458 sp 00007ffe8e361c70 error 4 in claude-2.1.243-linux-x64[1b0f458,1953000+3b33000] likely on CPU 5 (core 6, socket 0)
[ 652.461024] Code: cc cc 55 48 89 e5 48 89 fe 48 8b 05 82 19 78 03 48 89 f9 48 c1 e9 1d 48 8b 84 c8 80 00 00 00 89 f1 c1 e9 0d 81 e1 f8 ff 00 00 <48> 8b 3c 08 48 85 ff 74 1e 48 8b 07 64 48 33 04 25 00 00 00 00 75
```

### Steps to Reproduce

1. Clean environment: remove any prior npm-based install (`npm uninstall -g @anthropic-ai/claude-code`, `rm -rf ~/.local/share/claude`)
2. Run the native installer:
```
curl -fsSL https://claude.ai/install.sh | bash
```
3. Installer downloads successfully, then crashes during its own `install` step (see Error Messages/Logs)
4. Running the installed binary directly (`claude --version`, `claude doctor`, etc.) crashes the same way
5. Try the known Bun/JavaScriptCore JIT workaround — does not help:
```
set -gx BUN_JSC_useJIT 0
curl -fsSL https://claude.ai/install.sh | bash
```

### Claude Model

None

### Is this a regression?

I don't know

### Last Working Version

_No response_

### Claude Code Version

2.1.243 (Claude Code)

### Platform

Anthropic API

### Operating System

Other Linux

### Terminal/Shell

Other

### Additional Information

Diagnostic checks already ruled out:
- Architecture (`uname -m`): x86_64 — matches downloaded binary
- libc (`ldd --version`): `ldd (GNU libc) 2.44` — glibc, not musl
- Memory (`free -h`): 15Gi total, 10Gi available — not an OOM kill (that gives exit 137, not 139)
- AVX support (`grep avx /proc/cpuinfo`): present
- Virtualization (`systemd-detect-virt`): none — bare metal, not a VM/container
- `BUN_JSC_useJIT=0` workaround: tried, no change

Environment: CachyOS Linux (`ID=cachyos`, Arch-based, custom BORE kernel/scheduler and distro-level compiler optimizations), shell: fish, arch: x86_64.

Note: while filling out this form, GitHub flagged several potential duplicates with what looks like the exact same crash signature (same instruction pointer `0x0000000001d10458` in `free`), including #89371, #89369, and #89360.

Happy to run further diagnostics (`strace`, `gdb` on a core dump, testing other `BUN_JSC_*` flags, testing on the mainline kernel instead of `linux-cachyos`) if maintainers can suggest specific commands.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the native installer command curl -fsSL https://claude.ai/install.sh | bash and reproduce using claude --version or claude doctor on CachyOS. Review the repeated dmesg SIGSEGV entries at instruction pointer 0x1d10458 and compare behavior with BUN_JSC_useJIT=0 or a mainline kernel. Done means installation completes and both commands run without exit code 139.

Written by the indexing model from the issue text.

Assessment

Tech stack
bun, fish, linux
Domain
cli, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.