Problem
codex_app_server::tests::process_group_cleanup_reaps_a_native_launcher_descendant is flaky under CI load:
thread '...' panicked at src/codex_app_server.rs:5365:
called `Result::unwrap()` on an `Err` value: ParseIntError { kind: Empty }
The descendant writes its pid with printf "%s" "$$" > "$DESCENDANT_PIDFILE". The readiness loop waits on descendant_pidfile.is_file(), which becomes true when the shell creates the file — before any bytes are written. Reading at that moment yields an empty string and the parse unwrap panics.
Observed once on run 32759546875 (PR #335); identical code passed runs 32759495299 (#333) and #334's run, confirming a race rather than a regression.
Fix
Wait for content, not existence: poll read_to_string until it yields a parseable non-empty value instead of gating on is_file().
Posted on behalf of @schickling
| field |
value |
agent_identity |
unknown |
agent_persona |
generalist |
agent_supervisor |
unavailable |
agent_tool |
OMP |
agent_tool_version |
18.0.3 |
agent_runtime |
OMP 18.0.3 |
tooling_profile |
dotfiles@f33cd9c-dirty |
Problem
codex_app_server::tests::process_group_cleanup_reaps_a_native_launcher_descendantis flaky under CI load:The descendant writes its pid with
printf "%s" "$$" > "$DESCENDANT_PIDFILE". The readiness loop waits ondescendant_pidfile.is_file(), which becomes true when the shell creates the file — before any bytes are written. Reading at that moment yields an empty string and the parse unwrap panics.Observed once on run 32759546875 (PR #335); identical code passed runs 32759495299 (#333) and #334's run, confirming a race rather than a regression.
Fix
Wait for content, not existence: poll
read_to_stringuntil it yields a parseable non-empty value instead of gating onis_file().Posted on behalf of @schickling
agent_identityagent_personaagent_supervisoragent_toolagent_tool_versionagent_runtimetooling_profile