[BUG] v2.1.233 hangs indefinitely on startup (even --version) — pre-main futex deadlock; v2.1.226 works
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?
Claude Code 2.1.233 (native installer) hangs forever on ANY invocation, including claude --version. No output, no error message, no prompt — the process must be killed manually. It hangs identically in an empty directory, so this is not project/config related.
Downgrading to 2.1.226 on the same machine (curl -fsSL https://claude.ai/install.sh | bash -s stable) fully resolves it, so this is a regression introduced between 2.1.226 and 2.1.233.
strace shows the process deadlocks within milliseconds of startup, before doing anything meaningful: the binary starts, mimalloc initializes and spawns its mi-scavenger thread, then the main thread parks permanently on futex(..., FUTEX_WAIT_BITSET_PRIVATE, 0, NULL, ...) with no timeout. After that: zero further syscalls — no config files opened, no network calls, no additional threads.
Ruled out during debugging:
- Config/project: hangs identically in an empty dir and with --version
- Network/DNS: no network syscalls appear before the hang
- CPU features: AVX and AVX2 both present in guest /proc/cpuinfo
- Entropy: getrandom() succeeded instantly in the trace
- Disk space, stale locks: checked, fine
What Should Happen?
claude --version should print the version and exit; claude should reach the interactive prompt.
Error Messages/Logs
3788 getrandom("\x6b\xd5...", 32, GRND_NONBLOCK) = 32
3790 prctl(PR_SET_NAME, "mi-scavenger") = 0
3788 mmap(0x5db15800000, 1073741824, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x5db15800000
3788 madvise(0x5db15800000, 1073741824, MADV_NOHUGEPAGE) = 0
3788 sigaltstack(...) = 0
3788 rt_sigaction(SIGSEGV/SIGILL/SIGBUS/SIGFPE/SIGABRT/SIGTRAP, ...) = 0
3790 futex(0x5559898, FUTEX_WAIT_PRIVATE, 0, {tv_sec=30, tv_nsec=0})
3788 futex(0x56fafe4, FUTEX_WAIT_BITSET_PRIVATE, 0, NULL, FUTEX_BITSET_MATCH_ANY) <-- hangs here forever
(process killed manually; no further syscalls after this point)
Steps to Reproduce
- Environment: Ubuntu guest in VirtualBox (4 vCPUs, AVX2 exposed), recent kernel (MADV_GUARD_INSTALL succeeds in the trace, i.e. 6.13+)
- Install Claude Code 2.1.233 via the native installer: curl -fsSL https://claude.ai/install.sh | bash
- Run: claude --version
- Observe: indefinite hang, no output. Same with plain
claude, in any directory including an empty one. - Downgrade: curl -fsSL https://claude.ai/install.sh | bash -s stable (installs 2.1.226)
- claude --version now prints "2.1.226 (Claude Code)" immediately.
Claude Model
Not sure / Multiple models
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.1.226
Claude Code Version
2.1.233
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
VS Code integrated terminal
Additional Information
Runs inside a VirtualBox VM:
- Host OS: Ubuntu 24.04 LTS
- VirtualBox version: 7.2.14 r174565 (Qt6.8.0 on xcb)
- Guest: Ubuntu 26.04 LTS
- Kernel: Linux claudedevvm 7.0.0-29-generic #29-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 17 20:52:35 UTC 2026 x86_64 GNU/Linux
- 4 vCPUs, AVX/AVX2 present in guest /proc/cpuinfo
Full strace log attached (strace -f of claude --version on 2.1.233).
Workaround: pin to 2.1.226 via bash -s stable and set "autoUpdates": false in ~/.claude/settings.json.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗