From 45b8fe430dced8c489cb64491b8716cffeeca8c3 Mon Sep 17 00:00:00 2001 From: Pádraig Brady Date: Wed, 13 May 2015 13:41:42 +0100 Subject: timeout: with --foreground don't send SIGCONT * src/timeout.c (cleanup): Don't send SIGCONT to the monitored program when --foreground is specified, as it's generally not needed for foreground programs, and can cause intermittent signal delivery issues with monitors like GDB for example. * doc/coreutils.texi (timeout invocation): Mention that SIGCONT is not sent with --foreground. * NEWS: Mention the behavior change. --- src/timeout.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/timeout.c b/src/timeout.c index 19c07653a..98378f6f5 100644 --- a/src/timeout.c +++ b/src/timeout.c @@ -203,15 +203,17 @@ cleanup (int sig) in case it has itself become group leader, or is not running in a separate group. */ send_sig (monitored_pid, sig); + /* The normal case is the job has remained in our newly created process group, so send to all processes in that. */ if (!foreground) - send_sig (0, sig); - if (sig != SIGKILL && sig != SIGCONT) { - send_sig (monitored_pid, SIGCONT); - if (!foreground) - send_sig (0, SIGCONT); + send_sig (0, sig); + if (sig != SIGKILL && sig != SIGCONT) + { + send_sig (monitored_pid, SIGCONT); + send_sig (0, SIGCONT); + } } } else /* we're the child or the child is not exec'd yet. */ -- cgit v1.2.3-70-g09d2