`claude install` and installed binary hang indefinitely in futex wait on Ubuntu 22.04 KVM VPS (native installer, direct invocation, and npm paths)

Status Open
Reported on v2.1.218
Maintainer reply None cached
Activity 0 comments · opened Jul 23, 2026

Summary

On a fresh Ubuntu 22.04.5 VPS, every install path for Claude Code ends in the same failure: the process hangs indefinitely with zero output and 0% CPU, with strace showing a worker thread permanently blocked in a futex wait. The download itself is fine (correct binary, checksum-verified); the hang is inside the binary's own startup/install logic. Additionally, one npm install attempt resolved to the wrong platform binary (a Windows claude.exe) on a linux-x64 host.

Environment

| | |
|---|---|
| Claude Code version | 2.1.218 (native binary, claude-2.1.218-linux-x64, 273,177,584 bytes); npm attempts used the then-latest published package |
| OS | Ubuntu 22.04.5 LTS (Jammy) |
| Kernel | 5.15.0-186-generic |
| Arch | linux-x64 |
| Hardware | VPS: 1 vCPU, 2 GB RAM (+2 GB swap), 50 GB disk — QEMU/KVM, 1984 Hosting (Iceland) |
| Node / npm | Node v24.18.0, npm 12.0.1 |

Install methods tried, in order, with distinct failure modes

  1. npm install -g @anthropic-ai/claude-code — resolved to the wrong platform binary: a ~273 MB claude.exe (Windows PE) where a Linux ELF binary was expected, despite a linux-x64 node/npm environment. Confirmed via ls -la on the installed tree. Reproduced after a full npm uninstall -g + npm cache clean + reinstall.
  2. Native installer (curl -fsSL https://claude.ai/install.sh | bash), tried with both latest and an explicit stable pin — the download step worked correctly every time: correct linux-x64 binary, 273,177,584 bytes, SHA256 matched the published checksum, chmod +x fine. But the binary's own install subcommand hangs indefinitely with zero output. Reproduced across two different Claude Code versions.
  3. Direct invocation of the downloaded binary (bypassing the installer wrapper entirely) — identical silent hang.
  4. npm retry after the native-installer hangsnpm install -g @anthropic-ai/claude-code itself completed in seconds, but running the installed claude --version hangs the same way (verified independently in a later session: timeout 60 claude --version produced no output and exited 124; a plain --version should return in milliseconds).

Diagnostic evidence

strace -f on a hung install process:

  • Main thread: idle, servicing terminal signals — not doing work, not crashed.
  • Second thread (PID+1): blocked in a futex(... FUTEX_WAIT ...) that is never resumed for the life of the process.
  • Process sits at 0% CPU while hung — this is a deadlock / lost-wakeup on a worker thread, not a compute-, IO-, or network-bound stall.

Ruled out

  • Network: independent TLS handshakes to api.anthropic.com and downloads.claude.ai complete cleanly and fast from this box; the binary download itself succeeds and checksums correctly.
  • Memory: ~1.5 GB available throughout (free -h); no OOM-killer activity.
  • Disk: 40 GB free.
  • CPU starvation: only 1 vCPU, but the hang shows 0% CPU — the process is asleep, not queued.
  • Corrupt download: SHA256 verified against the published checksum.
  • Version-specific regression: reproduced on two different versions via the native installer, plus the npm-published build.

Reproduction

# Fresh Ubuntu 22.04.5 (kernel 5.15.0-186-generic), 1 vCPU / 2 GB KVM guest
curl -fsSL https://claude.ai/install.sh | bash
# → download OK, checksum OK, then hangs forever at the install step, no output

# or:
~/.claude/downloads/claude-2.1.218-linux-x64 --version
# → hangs, 0% CPU, no output

# strace -f -p <pid> → thread 2 stuck in futex wait, main thread idle

Expected behavior

claude install completes (or fails with an error message); claude --version prints a version string and exits.

Actual behavior

Indefinite silent hang (observed > several minutes, 0% CPU) in every mode that executes the binary; one npm resolution additionally delivered a Windows .exe on linux-x64.

Notes for triage

  • The same operator runs Claude Code successfully on another Hetzner Ubuntu box, so this appears environment-sensitive — possibly to this KVM host's CPU feature set, single-vCPU scheduling, or the 5.15 kernel — rather than universal.
  • Happy to run further diagnostics on the affected box (strace/ltrace output, gdb thread backtraces, env dumps) on request — it is a not-yet-production VPS, easy to test on.

View original on GitHub ↗