From owner-freebsd-current Mon Nov 29 15: 2:25 1999 Delivered-To: freebsd-current@freebsd.org Received: from apollo.backplane.com (apollo.backplane.com [216.240.41.2]) by hub.freebsd.org (Postfix) with ESMTP id 4C27F156F3; Mon, 29 Nov 1999 15:02:14 -0800 (PST) (envelope-from dillon@apollo.backplane.com) Received: (from dillon@localhost) by apollo.backplane.com (8.9.3/8.9.1) id PAA12145; Mon, 29 Nov 1999 15:02:08 -0800 (PST) (envelope-from dillon) Date: Mon, 29 Nov 1999 15:02:08 -0800 (PST) From: Matthew Dillon Message-Id: <199911292302.PAA12145@apollo.backplane.com> To: "Viren R.Shah" Cc: Eivind Eklund , Greg Lehey , freebsd-current@FreeBSD.ORG Subject: Re: repeatable crash in -current (softupdates, NFS) References: <14399.63511.296802.242618@jabberwock.rstcorp.com> <19991127195332.36233@mojave.sitaranetworks.com> <14402.62513.189527.729294@jabberwock.rstcorp.com> <199911292155.NAA09688@apollo.backplane.com> <14403.496.341437.658744@jabberwock.rstcorp.com> Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG :OK, here's a -current system from today (11/29) morning [4am EST] with :kernel compiled with DDB and -g. : :Tried doing a simple symlink over a NFS mounted filesystem: : :fatal trap 12: page fault while in kernel mode :fault virtual address = 0x4 :fault code = supervisor read, page not present :instruction pointer = 0x8:0xc0167979 :... :db> trace : : vput(0) at vput+0x11 : symlink (c9d4e200, c9d74f80, bfbfdab5, bfbfda9e, bfbfd99c) at symlink+0x1e3 : syscall(2f, 2f, 2f, bfbfd99c, bfbfda9e) at syscall+0x176 : Xint0x80_syscall() at Xint0x80_syscall+0x26 I believe the problem is with the ASSERT_VOP_UNLOCKED macros that have been added to the symlink code in kern/vfs_syscalls.c, near the end of the procedure. Also, I think there's a race condition with the ASSERT_VOP_UNLOCKED() macros... when a vnode is vput it is possible for it to be freed up, the assert may not be valid at that point. Please try this patch: -Matt Index: vfs_syscalls.c =================================================================== RCS file: /FreeBSD/FreeBSD-CVS/src/sys/kern/vfs_syscalls.c,v retrieving revision 1.146 diff -u -r1.146 vfs_syscalls.c --- vfs_syscalls.c 1999/11/20 10:00:40 1.146 +++ vfs_syscalls.c 1999/11/29 23:01:09 @@ -1307,7 +1307,8 @@ vput(nd.ni_vp); vput(nd.ni_dvp); ASSERT_VOP_UNLOCKED(nd.ni_dvp, "symlink"); - ASSERT_VOP_UNLOCKED(nd.ni_vp, "symlink"); + if (error == 0) + ASSERT_VOP_UNLOCKED(nd.ni_vp, "symlink"); out: zfree(namei_zone, path); return (error); To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message