tinyhumansai/openhuman · error · anyhow::Error
wait child: {e}
Error message
wait child: {e} What it means
Waiting for the claude child process to exit (after stdout reached EOF and the parser was ended) failed — the OS wait syscall on the child errored. The turn's output was already consumed; this failure means the exit status is unknown, so the driver cannot distinguish success from a signal.
Source
Thrown at src/openhuman/inference/provider/claude_code/driver.rs:462
for delta in mapper.handle(ev) {
if let Some(tx) = ctx.stream {
let _ = tx.send(delta).await;
}
}
}
}
for ev in parser.end() {
for delta in mapper.handle(ev) {
if let Some(tx) = ctx.stream {
let _ = tx.send(delta).await;
}
}
}
let status = child
.wait()
.await
.map_err(|e| anyhow::anyhow!("wait child: {e}"))?;
Ok::<_, anyhow::Error>(status)
})
.await;
let status = match timed {
Ok(inner) => inner?,
Err(_elapsed) => {
log::error!(
"[claude-code][driver] turn timeout ({TURN_TIMEOUT:?}) exceeded; killing child"
);
// kill_on_drop handles cleanup, but explicit kill gives us
// a chance to collect stderr.
let _ = child.kill().await;
anyhow::bail!(
"[claude-code][driver] turn timed out after {:?}",
TURN_TIMEOUT
);
}View on GitHub (pinned to 7491200858)
Solutions
- Retry the turn
- Check for zombie/orphaned claude processes
- Investigate OS-level process issues if recurrent
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at src/openhuman/inference/provider/claude_code/driver.rs:462 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/b4dda4babdd0844d.
Report an issue: GitHub.