Skip to content

fix(run): terminate descendants when cancelling tasks - #724

Open
danieljvdm wants to merge 3 commits into
voidzero-dev:mainfrom
danieljvdm:fix/cancel-task-descendants
Open

danieljvdm wants to merge 3 commits into
voidzero-dev:mainfrom
danieljvdm:fix/cancel-task-descendants

Conversation

@danieljvdm

Copy link
Copy Markdown

Motivation

When one task fails, cancelling a sibling currently kills only its direct Unix child. A Vitest task can therefore leave its workerd runtime running after cancellation. Before #675, that orphan also held the fspy lock and prevented the outer runner from exiting; nonblocking trace collection removes that wait but does not terminate the orphan.

Give each piped or noninteractive Unix task its own process group and terminate that group on cancellation. Interactive inherited terminal tasks keep their foreground group; Ctrl-C is forwarded to isolated task groups. Windows uses the existing Job Object at cancellation time. Poll task lifetime handling alongside output draining so an inherited pipe cannot delay cancellation.

The generic fspy API gains an opt-in process-group setting and a captured child PID. Its default behavior is unchanged.

danieljvdm and others added 3 commits September 14, 2026 12:17
Co-authored-by: GPT-6 Codex <codex@openai.com>
Co-authored-by: GPT-6 Codex <codex@openai.com>
Co-authored-by: GPT-6 Codex <codex@openai.com>
@danieljvdm
danieljvdm marked this pull request as ready for review September 15, 2026 00:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant