Date: Tue, 29 Jan 2008 23:23:30 -0500 (EST) From: Daniel Eischen <eischen@vigrid.com> To: Landon Fuller <landonf@bikemonkey.org> Cc: freebsd-threads@freebsd.org Subject: Re: threads/119920: fork broken in libpthread Message-ID: <Pine.GSO.4.64.0801292320260.15096@sea.ntplx.net> In-Reply-To: <892A73B3-0114-4718-ABC0-CADD45D9D0FA@bikemonkey.org> References: <200801240850.m0O8o2JQ023500@freefall.freebsd.org> <4798564B.7070500@elischer.org> <Pine.GSO.4.64.0801240957550.16059@sea.ntplx.net> <488DBC6A-CF33-4E50-B1BB-C396C8957F92@bikemonkey.org> <Pine.GSO.4.64.0801291611130.12689@sea.ntplx.net> <892A73B3-0114-4718-ABC0-CADD45D9D0FA@bikemonkey.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 29 Jan 2008, Landon Fuller wrote: > > On Jan 29, 2008, at 13:13, Daniel Eischen wrote: >>> >> >> There is a bug somewhere else or something is stomping >> on the thread's lockuser. It is allocated once when the >> thread is created and should never be null thereafter. >> Hence, it should never be malloc'd and the reinit should >> be sufficient. > > I'm totally unfamiliar with KSE, so perhaps this a stupid question -- it > seems to solve the issue locally, so I'll ask it -- > Why not place the fork() code inside of _kse_critical_enter / > _kse_critical_leave, to ensure upcalls are blocked while re-initializing in > the child process post-fork? That just prevents an upcall from happening (which my patch solves), but doesn't prevent the corruption of the lockuser or lock. My patch does solve this in -current, but -stable probably lacks a few other patches. It (-stable) really needs all of -current's code, not just this patch. -- DE
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.64.0801292320260.15096>