summaryrefslogtreecommitdiffstats
path: root/sys/kern/sys_process.c
diff options
context:
space:
mode:
authortruckman <truckman@FreeBSD.org>2004-02-11 22:06:02 +0000
committertruckman <truckman@FreeBSD.org>2004-02-11 22:06:02 +0000
commitda322e8d358c09c962756e773ba99796e5d3ee90 (patch)
treedb4610925d7da7c9256ffa824a06f8065b7f03ff /sys/kern/sys_process.c
parentbd660fe15b83a3b56c4de4f047cf277a80150e5f (diff)
downloadFreeBSD-src-da322e8d358c09c962756e773ba99796e5d3ee90.zip
FreeBSD-src-da322e8d358c09c962756e773ba99796e5d3ee90.tar.gz
When reparenting a process to init, make sure that p_sigparent is
set to SIGCHLD. This avoids the creation of orphaned Linux-threaded zombies that init is unable to reap. This can occur when the parent process sets its SIGCHLD to SIG_IGN. Fix a similar situation in the PT_DETACH code. Tested by: "Steven Hartland" <killing AT multiplay.co.uk>
Diffstat (limited to 'sys/kern/sys_process.c')
-rw-r--r--sys/kern/sys_process.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c
index 9e49d9d..9a79551 100644
--- a/sys/kern/sys_process.c
+++ b/sys/kern/sys_process.c
@@ -561,6 +561,7 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data)
PROC_UNLOCK(pp);
PROC_LOCK(p);
proc_reparent(p, pp);
+ p->p_sigparent = SIGCHLD;
}
p->p_flag &= ~(P_TRACED | P_WAITED);
p->p_oppid = 0;
OpenPOWER on IntegriCloud