mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-09 13:21:42 +00:00
Root cause: gateway spawns LSP servers (jdtls/pyright/yaml-ls) and slash_worker without start_new_session=True, so they inherit the gateway process group (= TUI parent PID). When mcp_tool _snapshot_child_pids() races with these spawns during stdio MCP server startup, non-MCP children leak into _stdio_pgids with the TUI parent PGID. shutdown_mcp_servers() then killpg(tui_parent_pid, SIGTERM), killing the TUI itself. Evidence: tui_gateway_crash.log shows recurring SIGTERM stacks: shutdown_mcp_servers -> _kill_orphaned_mcp_children -> _send_signal -> killpg(pgid, sig) -> SIGTERM received Fix (3 layers): 1. agent/lsp/client.py: add start_new_session=True to LSP server spawn so each LSP server gets its own process group/session. 2. tui_gateway/server.py: same fix for slash_worker spawn, the symmetric root-cause patch so no gateway direct child shares the TUI parent pgid. 3. tools/mcp_tool.py: add _filter_mcp_children() defense-in-depth that drops non-MCP children (slash_worker, jdtls/eclipse LSP) from the PID delta before they can poison _stdio_pgids. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| entry.py | ||
| event_publisher.py | ||
| git_probe.py | ||
| loop_noise.py | ||
| project_tree.py | ||
| render.py | ||
| server.py | ||
| slash_worker.py | ||
| transport.py | ||
| ws.py | ||