You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(component-runtime): retry a stdio sidecar spawn that hits ETXTBSY #907
alef-component-runtime 0.128.0 spawns a stdio sidecar once with no retry (src/stdio/process.rs:30-36). On Linux, a sidecar executable that was just installed can fail to start with Text file busy (os error 26). Another thread forks while the installer's write descriptor is still open, and the child holds that descriptor until exec. This flakes poly's CI (Goldziher/polylint#138, in crates/poly-component-host/tests/sidecar.rs) and can hit any multi-threaded host that installs and then starts a sidecar.
Fix: wrap the spawn in a bounded retry on std::io::ErrorKind::ExecutableFileBusy. cargo and rustup handle it the same way, and so does poly in crates/poly-cli/src/doctor/probe.rs (200 tries, 10 ms apart). Add unit tests for the helper: busy N times then Ok, and busy until the retries run out.
Fixed in 153db0d, released in 0.129.0: the sidecar spawn retries a bounded number of times on std::io::ErrorKind::ExecutableFileBusy (200 tries, 10 ms apart), with unit tests for the helper.
Activity
fix(component-runtime): retry a stdio sidecar spawn that hits ETXTBSY
Goldziher commentedon Nov 8, 2026
Fixed in 153db0d, released in 0.129.0: the sidecar spawn retries a bounded number of times on
std::io::ErrorKind::ExecutableFileBusy(200 tries, 10 ms apart), with unit tests for the helper.