From owner-freebsd-stable@FreeBSD.ORG Thu Feb 1 16:46:48 2007 Return-Path: X-Original-To: freebsd-stable@freebsd.org Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2409516A402 for ; Thu, 1 Feb 2007 16:46:48 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from relay01.kiev.sovam.com (relay01.kiev.sovam.com [62.64.120.200]) by mx1.freebsd.org (Postfix) with ESMTP id B595C13C478 for ; Thu, 1 Feb 2007 16:46:47 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from [212.82.216.227] (helo=fw.zoral.com.ua) by relay01.kiev.sovam.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.60) (envelope-from ) id 1HCf54-000PkJ-5I for freebsd-stable@freebsd.org; Thu, 01 Feb 2007 18:46:46 +0200 Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by fw.zoral.com.ua (8.13.4/8.13.4) with ESMTP id l11GkWBZ054011 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 1 Feb 2007 18:46:32 +0200 (EET) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.13.8/8.13.8) with ESMTP id l11GkW7W021998; Thu, 1 Feb 2007 18:46:32 +0200 (EET) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.13.8/8.13.8/Submit) id l11GkVBZ021997; Thu, 1 Feb 2007 18:46:31 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Thu, 1 Feb 2007 18:46:31 +0200 From: Kostik Belousov To: Guy Helmer Message-ID: <20070201164631.GJ56152@deviant.kiev.zoral.com.ua> References: <45C0C749.1040300@palisadesys.com> <45C20F00.4010900@palisadesys.com> <20070201163826.GI56152@deviant.kiev.zoral.com.ua> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="n8884J15jRwcBTvu" Content-Disposition: inline In-Reply-To: <20070201163826.GI56152@deviant.kiev.zoral.com.ua> User-Agent: Mutt/1.4.2.2i X-Virus-Scanned: ClamAV version 0.88.7, clamav-milter version 0.88.7 on fw.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-0.1 required=5.0 tests=ALL_TRUSTED,SPF_NEUTRAL autolearn=failed version=3.1.7 X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on fw.zoral.com.ua X-Scanner-Signature: 44556c58cf61beb49de4494ee559d59c X-DrWeb-checked: yes X-SpamTest-Envelope-From: kostikbel@gmail.com X-SpamTest-Group-ID: 00000000 X-SpamTest-Info: Profiles 738 [Feb 01 2007] X-SpamTest-Info: helo_type=3 X-SpamTest-Info: {received from trusted relay: not dialup} X-SpamTest-Method: none X-SpamTest-Method: Local Lists X-SpamTest-Rate: 0 X-SpamTest-Status: Not detected X-SpamTest-Status-Extended: not_detected X-SpamTest-Version: SMTP-Filter Version 3.0.0 [0255], KAS30/Release Cc: freebsd-stable@freebsd.org Subject: Re: 6.2 amd64 panic: lockmgr: thread 0xffffff009f9fd000, not exclusive lock holder 0xffffff003961c000 unlocking X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Feb 2007 16:46:48 -0000 --n8884J15jRwcBTvu Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Feb 01, 2007 at 06:38:26PM +0200, Kostik Belousov wrote: > On Thu, Feb 01, 2007 at 10:02:08AM -0600, Guy Helmer wrote: > vn_lock with LK_EXCLUSIVE|LK_RETRY flags combination shall not fail. It s= hould > return even dead vnodes locked. >=20 > I suspect that in fact this is race with exec(). Could you reproduce the > panic ? And then, with this patch ? >=20 > Index: fs/procfs/procfs.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: /usr/local/arch/ncvs/src/sys/fs/procfs/procfs.c,v > retrieving revision 1.14 > diff -u -r1.14 procfs.c > --- fs/procfs/procfs.c 5 Jun 2006 16:41:27 -0000 1.14 > +++ fs/procfs/procfs.c 1 Feb 2007 16:37:43 -0000 > @@ -69,10 +69,12 @@ > { > char *fullpath =3D "unknown"; > char *freepath =3D NULL; > + struct vnode *textvp; > =20 > - vn_lock(p->p_textvp, LK_EXCLUSIVE | LK_RETRY, td); > - vn_fullpath(td, p->p_textvp, &fullpath, &freepath); > - VOP_UNLOCK(p->p_textvp, 0, td); > + textvp =3D p->p_textvp; > + vn_lock(textvp, LK_EXCLUSIVE | LK_RETRY, td); > + vn_fullpath(td, textvp, &fullpath, &freepath); > + VOP_UNLOCK(textvp, 0, td); > sbuf_printf(sb, "%s", fullpath); > if (freepath) > free(freepath, M_TEMP); That patch is incorrect as well: textvp may be reclaimed while waiting for lock. Below is better version. Index: fs/procfs/procfs.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /usr/local/arch/ncvs/src/sys/fs/procfs/procfs.c,v retrieving revision 1.14 diff -u -r1.14 procfs.c --- fs/procfs/procfs.c 5 Jun 2006 16:41:27 -0000 1.14 +++ fs/procfs/procfs.c 1 Feb 2007 16:44:41 -0000 @@ -69,10 +69,17 @@ { char *fullpath =3D "unknown"; char *freepath =3D NULL; + struct vnode *textvp; + int err; =20 - vn_lock(p->p_textvp, LK_EXCLUSIVE | LK_RETRY, td); - vn_fullpath(td, p->p_textvp, &fullpath, &freepath); - VOP_UNLOCK(p->p_textvp, 0, td); + textvp =3D p->p_textvp; + VI_LOCK(textvp); + vholdl(textvp); + err =3D vn_lock(textvp, LK_EXCLUSIVE | LK_INTERLOCK, td); + vdrop(textvp); + if (err) + vn_fullpath(td, textvp, &fullpath, &freepath); + VOP_UNLOCK(textvp, 0, td); sbuf_printf(sb, "%s", fullpath); if (freepath) free(freepath, M_TEMP); --n8884J15jRwcBTvu Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (FreeBSD) iD8DBQFFwhlnC3+MBN1Mb4gRAhOHAKDKc3pdVOt0P9zduDTRCfIHU6chdACeNPks Eb+6Y7vLQX8LERk0ryRsbOw= =YF5G -----END PGP SIGNATURE----- --n8884J15jRwcBTvu--