From: Michael Callahan Date: Thu, 14 Jul 2011 05:56:37 +0000 (+0200) Subject: Fix killing of threads that haven't started X-Git-Tag: fio-1.57~5 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=6aa2781630cf6f502d5e9177d9bd3432c1b5b964 Fix killing of threads that haven't started If there is a thread that has not started yet (for instance with a long startdelay or a stonewall) then a SIGINT will fire off terminate_threads which runs through all of the threads and calls kill(pid, SIGTERM). However the threads that have not started yet have a pid of 0. When you call kill(0, SIGTERM) it kills the entire thread group which can extend out of fio. I have included a short patch which fixes this for me. Signed-off-by: Jens Axboe --- diff --git a/fio.c b/fio.c index 2855ddf2..9e9106d5 100644 --- a/fio.c +++ b/fio.c @@ -102,7 +102,9 @@ static void terminate_threads(int group_id) /* * if the thread is running, just let it exit */ - if (td->runstate < TD_RAMP) + if (!td->pid) + continue; + else if (td->runstate < TD_RAMP) kill(td->pid, SIGTERM); else { struct ioengine_ops *ops = td->io_ops;