runner: a step is a process group, and ending it ends its children !176

merged merged by cmc on 2026-09-02 05:06 UTC · krz/gitbay:runner-kill-group into main

Discussion

cmc

Build 319's failure: on the CI host /bin/sh is dash, which forks sleep instead of exec'ing it; killing the shell left sleep holding the log pipe and cmd.Wait blocked for the full two minutes. Steps now run in their own process group, killed as a group on cancel or timeout, with a ten-second cap on the wait after a kill. The test's step forks its sleep as a child so it exercises this on any host.

Ref #90