summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralfred <alfred@FreeBSD.org>2004-10-01 14:15:20 +0000
committeralfred <alfred@FreeBSD.org>2004-10-01 14:15:20 +0000
commit0efc91b067ab28879f1c36e691901b416e50f3bc (patch)
tree80677560a69fa0d63f830cac1abf2ee922d18aba
parent104924bb066bb584ad43a48720f7fec7806b64e7 (diff)
downloadFreeBSD-src-0efc91b067ab28879f1c36e691901b416e50f3bc.zip
FreeBSD-src-0efc91b067ab28879f1c36e691901b416e50f3bc.tar.gz
Clear a process's procfs trace points upon delivery of SIGKILL.
MT5 candidate. (Desired features for 5.3-RELEASE "More truss problems")
-rw-r--r--sys/kern/kern_sig.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
index 4ecbd03..4fcf79e 100644
--- a/sys/kern/kern_sig.c
+++ b/sys/kern/kern_sig.c
@@ -1775,6 +1775,16 @@ do_tdsignal(struct thread *td, int sig, sigtarget_t target)
!((prop & SA_CONT) && (p->p_flag & P_STOPPED_SIG)))
return;
/*
+ * SIGKILL: Remove procfs STOPEVENTs.
+ */
+ if (sig == SIGKILL) {
+ /* from procfs_ioctl.c: PIOCBIC */
+ p->p_stops = 0;
+ /* from procfs_ioctl.c: PIOCCONT */
+ p->p_step = 0;
+ wakeup(&p->p_step);
+ }
+ /*
* Some signals have a process-wide effect and a per-thread
* component. Most processing occurs when the process next
* tries to cross the user boundary, however there are some
OpenPOWER on IntegriCloud