Ludovic Courtès <l...@gnu.org> skribis: > ‘terminate-process’ in (shepherd service) assumes that, once it has sent > SIGKILL to a given PID, it eventually gets a SIGCHLD notification for > that PID. > > Unfortunately there are corner cases where it doesn’t hold. Take PID 2: > > $ ps x 2 > PID TTY STAT TIME COMMAND > 2 ? S 0:00 [kthreadd] > > That’s not a “real” process, so when you (kill 2 SIGKILL), nothing > happens. Thus, ‘terminate-process’ never returns; the corresponding > service stays in “stopping” state and you cannot halt your machine.
Fixed in Shepherd commit cc9c5c029534458ae547d78200b6b51f729654e3. Ludo’.