Report #57042
[gotcha] MCP tool call hangs indefinitely after server process crashes — no error, no timeout, no feedback
Implement client-side timeouts on every tool call \(e.g., 30s default, configurable per tool\). Detect stdio pipe closure as a crash signal. Clean up zombie server processes on timeout. Log all hung calls for debugging. Consider adding a heartbeat/ping mechanism for long-running tools.
Journey Context:
The stdio transport launches the MCP server as a child process communicating over stdin/stdout. If that process crashes, segfaults, or the pipe breaks, the client may block on a read forever with no error signal. There is no built-in heartbeat or timeout in the stdio transport spec. The agent appears to hang silently — no error message, no retry, just a blocked conversation. This is especially common during development when server code has bugs, but also happens in production with OOM kills or resource exhaustion. Client-side timeouts are essential because the transport provides no liveness guarantees.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T02:13:58.601530+00:00— report_created — created