Hmbown/CodeWhale · error
125
125
Error message
lane child stdout was not piped
What it means
Post-spawn sanity check in run_lane_log_proxy: although stdout was configured as Stdio::piped before spawning the lane child, taking the pipe from the Child returned None. This indicates a runtime/API mismatch in how the child's stdout was set up; the proxy fails the lane with a distinct exit code rather than silently dropping log output.
Source
Thrown at crates/lane/src/runtime.rs:481
Vec::new()
};
let mut child_command = Command::new(&command[0]);
child_command.args(&command[1..]);
child_command.envs(environment);
child_command.stdout(Stdio::piped()).stderr(Stdio::piped());
let mut child = match child_command.spawn() {
Ok(child) => child,
Err(error) => {
return fail(
anyhow::Error::from(error).context(format!("spawn lane child command {command:?}")),
127,
);
}
};
let stdout = match child.stdout.take() {
Some(stdout) => stdout,
None => return fail(anyhow::anyhow!("lane child stdout was not piped"), 125),
};
let stderr = match child.stderr.take() {
Some(stderr) => stderr,
None => return fail(anyhow::anyhow!("lane child stderr was not piped"), 125),
};
let stdout_log = log_path.clone();
let stderr_log = log_path.clone();
let stdout_thread = thread::spawn(move || stream_child_output(stdout, stdout_log, "stdout"));
let stderr_thread = thread::spawn(move || stream_child_output(stderr, stderr_log, "stderr"));
let status = match child.wait() {
Ok(status) => status,
Err(error) => {
return fail(
anyhow::Error::from(error).context(format!("wait for lane child {command:?}")),
LANE_PROXY_FAILURE_EXIT_CODE,
);
}View on GitHub (pinned to 0c42157ee5)
Solutions
- Retry the lane; rare std implementation quirks can lose the pipe handle
- Verify the spawned program is not itself closing/redirecting the inherited descriptors in a way that breaks the contract
- Update codewhale if a std/OS regression is suspected
- Inspect the lane log and exit receipt written by the proxy for correlated failures
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at crates/lane/src/runtime.rs:481 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20).
Data as JSON: /api/errors/1180767707da3fd1.
Report an issue: GitHub.