aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorEric Badger <badger@FreeBSD.org>2017-03-07 13:41:01 +0000
committerEric Badger <badger@FreeBSD.org>2017-03-07 13:41:01 +0000
commitb38bd91f4f567bcaf38842e80a5b1f0705035ad1 (patch)
tree356e510c70d86f56b09762618e461c194a5d5e33 /sys
parent15a9aedfa10f98dd1f1fdee1af81629a192b48e3 (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/kern_sig.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
index f6d3865e34db6..29d5dd4b13279 100644
--- a/sys/kern/kern_sig.c
+++ b/sys/kern/kern_sig.c
@@ -2859,14 +2859,15 @@ issignal(struct thread *td)
break; /* == ignore */
}
/*
- * If there is a pending stop signal to process
- * with default action, stop here,
- * then clear the signal. However,
- * if process is member of an orphaned
- * process group, ignore tty stop signals.
+ * If there is a pending stop signal to process with
+ * default action, stop here, then clear the signal.
+ * Traced or exiting processes should ignore stops.
+ * Additionally, a member of an orphaned process group
+ * should ignore tty stops.
*/
if (prop & SIGPROP_STOP) {
- if (p->p_flag & (P_TRACED|P_WEXIT) ||
+ if (p->p_flag &
+ (P_TRACED | P_WEXIT | P_SINGLE_EXIT) ||
(p->p_pgrp->pg_jobc == 0 &&
prop & SIGPROP_TTYSTOP))
break; /* == ignore */