aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/sys_process.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/sys_process.c')
-rw-r--r--sys/kern/sys_process.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c
index 70f48adc2be8..c67996ad7df1 100644
--- a/sys/kern/sys_process.c
+++ b/sys/kern/sys_process.c
@@ -1324,8 +1324,15 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data)
p->p_flag2 &= ~P2_PTRACE_FSTP;
}
- /* should we send SIGCHLD? */
- /* childproc_continued(p); */
+ /*
+ * Send SIGCHLD and wakeup the parent as needed. It
+ * may be the case that they had stopped the child
+ * before it got ptraced, and now they're in the middle
+ * of a wait(2) for it to continue.
+ */
+ PROC_LOCK(p->p_pptr);
+ childproc_continued(p);
+ PROC_UNLOCK(p->p_pptr);
break;
}