Date: Wed, 10 Jun 2009 16:40:06 GMT From: Andreas Longwitz <longwitz@incore.de> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/102834: [patch] mail(1) hangs on the sigsuspend system call in popen.c Message-ID: <200906101640.n5AGe6On007940@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/102834; it has been noted by GNATS. From: Andreas Longwitz <longwitz@incore.de> To: bug-followup@freebsd.org, longwitz@incore.de Cc: Subject: Re: bin/102834: [patch] mail(1) hangs on the sigsuspend system call in popen.c Date: Wed, 10 Jun 2009 18:36:43 +0200 --Boundary-00=_bE+LKNs2EjMVV2P Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline The described problem still occurs in all FreeBSD versions especially on SMP machines. The appended patch for 6.4 Stable works without problems for more than 3 years. Dr. Andreas Longwitz Data Service GmbH, Beethovenstr. 2A, 23617 Stockelsdorf --Boundary-00=_bE+LKNs2EjMVV2P Content-Type: text/x-diff; charset="iso 8859-15"; name="patch.popen.c.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="patch.popen.c.diff" --- popen.c.orig 2002-06-30 07:25:06.000000000 +0200 +++ popen.c 2009-05-07 15:58:19.000000000 +0200 @@ -364,11 +364,11 @@ int pid; { sigset_t nset, oset; - struct child *cp = findchild(pid); (void)sigemptyset(&nset); (void)sigaddset(&nset, SIGCHLD); (void)sigprocmask(SIG_BLOCK, &nset, &oset); + struct child *cp = findchild(pid); while (!cp->done) (void)sigsuspend(&oset); @@ -386,11 +386,11 @@ int pid; { sigset_t nset, oset; - struct child *cp = findchild(pid); (void)sigemptyset(&nset); (void)sigaddset(&nset, SIGCHLD); (void)sigprocmask(SIG_BLOCK, &nset, &oset); + struct child *cp = findchild(pid); if (cp->done) delchild(cp); --Boundary-00=_bE+LKNs2EjMVV2P--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906101640.n5AGe6On007940>