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
Spawn the job-reap test's grandchild via the base interpreter
The instrumented CI runs showed the grandchild booted (its startup
marker reached stderr on some legs) and then died tracelessly before it
could connect — no traceback, no SDK escalation, no job-handle close.
The remaining kill mechanism in the chain is the venv launcher layer:
sys.executable in a uv-managed venv is a trampoline that runs the real
interpreter inside its own kill-on-close Job, and that private job
machinery proved fatal to grandchildren on the CI runners.
The server now spawns its child through sys._base_executable, removing
the foreign launcher layer from the grandchild chain. The contract
under test is unchanged: the child still inherits the SDK's Job Object
at CreateProcess and must die when the job handle closes at shutdown.
Also report the child's poll() status after stdin EOF ends the server
(child-rc on stderr, zero cost on the healthy path), so any remaining
failure message names the child's exit status - the discriminator
between "still alive but unreachable" and "killed, by this code".
0 commit comments