Gently prod children with a SIGQUIT on terminate
This should unstuck most loops.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/fio.c b/fio.c
index b668d85..d426ad6 100644
--- a/fio.c
+++ b/fio.c
@@ -67,6 +67,7 @@
for_each_td(td, i) {
if (group_id == TERMINATE_ALL || groupid == td->groupid) {
+ kill(td->pid, SIGQUIT);
td->terminate = 1;
td->start_delay = 0;
if (forced_kill)
@@ -893,7 +894,8 @@
if (WIFSIGNALED(status)) {
int sig = WTERMSIG(status);
- log_err("fio: pid=%d, got signal=%d\n", td->pid, sig);
+ if (sig != SIGQUIT)
+ log_err("fio: pid=%d, got signal=%d\n", td->pid, sig);
td_set_runstate(td, TD_REAPED);
goto reaped;
}