fix: close stdin when running an exec tool call (#636)
We were already doing this in the TypeScript version, but forgot to
bring this over to Rust:
c38c2a59c7/codex-cli/src/utils/agent/sandbox/raw-exec.ts (L76-L78)
This commit is contained in:
@@ -206,9 +206,17 @@ pub async fn exec(
|
|||||||
if let Some(dir) = &workdir {
|
if let Some(dir) = &workdir {
|
||||||
cmd.current_dir(dir);
|
cmd.current_dir(dir);
|
||||||
}
|
}
|
||||||
cmd.stdout(Stdio::piped()).stderr(Stdio::piped());
|
|
||||||
cmd.kill_on_drop(true);
|
// Do not create a file descriptor for stdin because otherwise some
|
||||||
cmd.spawn()?
|
// commands may hang forever waiting for input. For example, ripgrep has
|
||||||
|
// a heuristic where it may try to read from stdin as explained here:
|
||||||
|
// https://github.com/BurntSushi/ripgrep/blob/e2362d4d5185d02fa857bf381e7bd52e66fafc73/crates/core/flags/hiargs.rs#L1101-L1103
|
||||||
|
cmd.stdin(Stdio::null());
|
||||||
|
|
||||||
|
cmd.stdout(Stdio::piped())
|
||||||
|
.stderr(Stdio::piped())
|
||||||
|
.kill_on_drop(true)
|
||||||
|
.spawn()?
|
||||||
};
|
};
|
||||||
|
|
||||||
let stdout_handle = tokio::spawn(read_capped(
|
let stdout_handle = tokio::spawn(read_capped(
|
||||||
|
|||||||
Reference in New Issue
Block a user