Date: Mon, 22 Dec 1997 00:55:43 +0100 From: pb@fasterix.freenix.org (Pierre Beyssac) To: ache@nagual.pp.ru (???????????????) Cc: current@FreeBSD.ORG (FreeBSD-current) Subject: Re: vfork (exec?) bug confirmation Message-ID: <19971222005543.CE52615@@> In-Reply-To: <Pine.BSF.3.96.971221212932.238A-100000@ache.relcom.ru>; from ??????????????? on Dec 21, 1997 21:37:23 %2B0300 References: <Pine.BSF.3.96.971221212932.238A-100000@ache.relcom.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
??????????????? writes: > I can confirm that following script cause immediate kernel page fault > even with very recent -current. >From what I understand, it looks more and more like a vfork() bug. The bug in execve() may be explained by a weird stack left by vfork() which causes arguments passed by value to fail. Some more information I got from ddb: - the panic occurs when the child csh calls execve(); - the parent csh is, at this moment, waiting in "ppwait". The main differences between vfork() and fork() are flags RFMEM and RFPPWAIT when calling fork1(). Disabling "fast_vfork" causes the first flag to be disabled and the bug to disappear. So the bug is probably in one of the sections that handle RFMEM. I see only one in fork1(): /* * Divorce the memory, if it is shared, essentially * this changes shared memory amongst threads, into * COW locally. */ if ((flags & RFMEM) == 0) { if (p1->p_vmspace->vm_refcnt > 1) { vmspace_unshare(p1); } } Shouldn't something be done also when RFMEM is set? -- Pierre Beyssac pb@fasterix.frmug.org pb@fasterix.freenix.org {Free,Net,Open}BSD, Linux : il y a moins bien, mais c'est plus cher Free domains: http://www.eu.org/ or mail dns-manager@EU.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19971222005543.CE52615>