Module Name: src Committed By: kamil Date: Tue Jun 18 23:53:55 UTC 2019
Modified Files: src/sys/kern: kern_exec.c kern_sig.c Log Message: Add support for KTR logs of SIGTRAP for TRAP_CHILD events Previously it was disabled due to vfork(2) synchronization issues. These problems are now gone. While there, set l_vforkwaiting to false in posix_spawn. This is not very needed but it does not make harm to keep it initialized explicitly. To generate a diff of this commit: cvs rdiff -u -r1.467 -r1.468 src/sys/kern/kern_exec.c cvs rdiff -u -r1.360 -r1.361 src/sys/kern/kern_sig.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/kern_exec.c diff -u src/sys/kern/kern_exec.c:1.467 src/sys/kern/kern_exec.c:1.468 --- src/sys/kern/kern_exec.c:1.467 Thu Jun 13 20:20:18 2019 +++ src/sys/kern/kern_exec.c Tue Jun 18 23:53:55 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_exec.c,v 1.467 2019/06/13 20:20:18 kamil Exp $ */ +/* $NetBSD: kern_exec.c,v 1.468 2019/06/18 23:53:55 kamil Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -59,7 +59,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.467 2019/06/13 20:20:18 kamil Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.468 2019/06/18 23:53:55 kamil Exp $"); #include "opt_exec.h" #include "opt_execfmt.h" @@ -2470,6 +2470,7 @@ do_posix_spawn(struct lwp *l1, pid_t *pi } p2->p_lflag = 0; + l1->l_vforkwaiting = false; p2->p_sflag = 0; p2->p_slflag = 0; p2->p_pptr = p1; Index: src/sys/kern/kern_sig.c diff -u src/sys/kern/kern_sig.c:1.360 src/sys/kern/kern_sig.c:1.361 --- src/sys/kern/kern_sig.c:1.360 Thu Jun 13 00:07:19 2019 +++ src/sys/kern/kern_sig.c Tue Jun 18 23:53:55 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_sig.c,v 1.360 2019/06/13 00:07:19 kamil Exp $ */ +/* $NetBSD: kern_sig.c,v 1.361 2019/06/18 23:53:55 kamil Exp $ */ /*- * Copyright (c) 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -70,7 +70,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_sig.c,v 1.360 2019/06/13 00:07:19 kamil Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_sig.c,v 1.361 2019/06/18 23:53:55 kamil Exp $"); #include "opt_ptrace.h" #include "opt_dtrace.h" @@ -1621,9 +1621,12 @@ eventswitch(int code) sigswitch(0, signo, false); - /* XXX: hangs for VFORK */ - if (code == TRAP_CHLD) - return; + if (code == TRAP_CHLD) { + mutex_enter(proc_lock); + while (l->l_vforkwaiting) + cv_wait(&l->l_waitcv, proc_lock); + mutex_exit(proc_lock); + } if (ktrpoint(KTR_PSIG)) { if (p->p_emul->e_ktrpsig)