Date: Thu, 24 Jan 2008 14:23:39 -0800 From: Alfred Perlstein <alfred@freebsd.org> To: Julian Elischer <julian@elischer.org> Cc: Daniel Eischen <deischen@freebsd.org>, Gary Stanley <gary@velocity-servers.net>, freebsd-threads@FreeBSD.org Subject: Re: threads/119920: fork broken in libpthread Message-ID: <20080124222339.GT99258@elvis.mu.org> In-Reply-To: <4798564B.7070500@elischer.org> References: <200801240850.m0O8o2JQ023500@freefall.freebsd.org> <4798564B.7070500@elischer.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--L2Brqb15TUChFOBK Content-Type: text/plain; charset=us-ascii Content-Disposition: inline * Julian Elischer <julian@elischer.org> [080124 01:17] wrote: > Gary Stanley wrote: > >The following reply was made to PR threads/119920; it has been noted by > >GNATS. > > > >From: Gary Stanley <gary@velocity-servers.net> > >To: bug-followup@FreeBSD.org > >Cc: > >Subject: Re: threads/119920: fork broken in libpthread > >Date: Thu, 24 Jan 2008 03:24:47 -0500 > > > > I also have this problem, see threads/118715 > > > > I was able to grab some ktrace info, but most of the time the process > > is stuck, and ktrace doesn't display any data. > > > >_______________________________________________ > >freebsd-threads@freebsd.org mailing list > >http://lists.freebsd.org/mailman/listinfo/freebsd-threads > >To unsubscribe, send any mail to "freebsd-threads-unsubscribe@freebsd.org" > > dan what IS the fix for this? I assume you must have fixed it in > -current/7 > > what was YOUR fix alfred? Attached. -- - Alfred Perlstein --L2Brqb15TUChFOBK Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="thr_fork.diff" Index: thr_fork.c =================================================================== RCS file: /home/ncvs/src/lib/libpthread/thread/Attic/thr_fork.c,v retrieving revision 1.35 diff -u -r1.35 thr_fork.c --- thr_fork.c 18 Dec 2004 18:07:37 -0000 1.35 +++ thr_fork.c 29 Oct 2007 05:25:32 -0000 @@ -93,7 +93,10 @@ if (_kse_isthreaded() != 0) { _spinlock(__malloc_lock); } - if ((ret = __sys_fork()) == 0) { + THR_SCHED_LOCK(curthread, curthread); + ret = __sys_fork(); + THR_SCHED_UNLOCK(curthread, curthread); + if (ret == 0) { /* Child process */ errsave = errno; --L2Brqb15TUChFOBK--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080124222339.GT99258>