-
Notifications
You must be signed in to change notification settings - Fork 268
Orphaned Claude processes accumulate ~285 MB each on --resume #164
Description
Summary
When Happy resumes a Claude Code session via --resume, the original "parent" Claude process detaches (PPID becomes 1) but never terminates. Each orphan retains its own set of MCP server child processes. This leads to significant memory accumulation over time.
Environment
- happy-coder: 0.13.0
- Claude Code: 2.1.34 (native binary)
- macOS 15.3 (M2 Max, 32GB RAM)
- MCP config: 4 servers (filesystem, fetch, playwright, pplgraph)
Reproduction
- Start a Happy session from mobile (creates Claude process A + MCP children)
- Session gets resumed via
--resume <session-id>(creates Claude process B + new MCP children) - Process A detaches (PPID → 1) but stays alive with its MCP children
Observed Behavior
After 2 mobile sessions with resumes, I found 3 orphaned Claude processes:
PID 75342 (PPID 1) — 215 MB + 4 MCP children (63 MB) = 278 MB
PID 80924 (PPID 1) — 223 MB + 4 MCP children (63 MB) = 286 MB
PID 84777 (PPID 1) — 224 MB + 2 MCP children (49 MB) = 273 MB
Total waste: 858 MB across 3 orphans + 10 MCP server processes, all idle.
Active sessions (the resumed ones) were working correctly — only the pre-resume parents were orphaned.
Process Tree
Session start:
happy-coder → claude_remote_launcher → claude (A) ← spawns MCP servers
↓
Session resume:
happy-coder → claude_remote_launcher → claude (B) ← spawns NEW MCP servers
claude (A) ← detaches to PPID 1, keeps MCP servers alive
Expected Behavior
When a session is resumed, the original Claude process and its MCP children should be terminated. The new resumed process takes over the session — the old one serves no purpose.
Workaround
Manually kill the orphans:
# Find orphaned claude processes (PPID 1, no active session)
ps -eo pid,ppid,rss,command | grep "claude/versions" | awk '$2==1'
# Kill them (cascades to MCP children)
kill <pid1> <pid2> ...Impact
Each orphan costs ~285 MB (claude binary + MCP servers). With active mobile use creating multiple resumes per day, this can waste 1+ GB of RAM. On a 32GB machine this is manageable, but on 16GB machines it would create significant memory pressure.