By: Tom Sydney Kerckhove <syd@cs-syd.eu>
mutation: swallow ECHILD in stopProcess cleanup waitExitCode reaps the child when it exits naturally, but bracket's cleanup then runs stopProcess which also tries to waitForProcess on the already-reaped pid and throws 'waitForProcess: does not exist (No child processes)'. The exception propagates out of mapConcurrently and crashes the whole harness after the first naturally-exiting mutation child. Swallow that specific cleanup-time IOException. The bracket is there to guarantee SIGTERM on the timeout-wins branch and on async exceptions; when the child has already exited, there is nothing left to clean up.
| Time to Start | Worker time | Duration | Time to finish | |
| Config | 0s | 2s | 2s | 2s |
| Eval | 2s | 38s | 38s | 41s |
| Build | 6s | 2h05m09s | 55m09s | 55m15s |
| Test | - | - | - | - |
| Deploy | - | - | - | - |
| Suite | 0s | 2h05m51s | 55m15s | 55m15s |