diff options
Diffstat (limited to 'sys/kern/sys_process.c')
-rw-r--r-- | sys/kern/sys_process.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c index d82fda0..cb88034 100644 --- a/sys/kern/sys_process.c +++ b/sys/kern/sys_process.c @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include <sys/syscallsubr.h> #include <sys/sysent.h> #include <sys/sysproto.h> +#include <sys/pioctl.h> #include <sys/priv.h> #include <sys/proc.h> #include <sys/vnode.h> @@ -975,7 +976,7 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data) sx_xunlock(&proctree_lock); proctree_locked = 0; } - p->p_xstat = data; + p->p_xsig = data; p->p_xthread = NULL; if ((p->p_flag & (P_STOPPED_SIG | P_STOPPED_TRACE)) != 0) { /* deliver or queue signal */ @@ -1300,7 +1301,8 @@ stopevent(struct proc *p, unsigned int event, unsigned int val) CTR3(KTR_PTRACE, "stopevent: pid %d event %u val %u", p->p_pid, event, val); do { - p->p_xstat = val; + if (event != S_EXIT) + p->p_xsig = val; p->p_xthread = NULL; p->p_stype = event; /* Which event caused the stop? */ wakeup(&p->p_stype); /* Wake up any PIOCWAIT'ing procs */ |