From owner-freebsd-bugs@FreeBSD.ORG Thu Jul 31 07:00:28 2003 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 614AD37B401 for ; Thu, 31 Jul 2003 07:00:28 -0700 (PDT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9105C43FBF for ; Thu, 31 Jul 2003 07:00:27 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.12.9/8.12.9) with ESMTP id h6VE0RUp073212 for ; Thu, 31 Jul 2003 07:00:27 -0700 (PDT) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.9/8.12.9/Submit) id h6VE0RSa073211; Thu, 31 Jul 2003 07:00:27 -0700 (PDT) Date: Thu, 31 Jul 2003 07:00:27 -0700 (PDT) Message-Id: <200307311400.h6VE0RSa073211@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: Peter Edwards Subject: Re: kern/53004: union_lookup returning . (0xbc332e90) not same as startdir (0xc1fa8a40) X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Peter Edwards List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Jul 2003 14:00:28 -0000 The following reply was made to PR kern/53004; it has been noted by GNATS. From: Peter Edwards To: freebsd-gnats-submit@FreeBSD.org, scrappy@hub.org Cc: alsbergt@cs.huji.ac.il Subject: Re: kern/53004: union_lookup returning . (0xbc332e90) not same as startdir (0xc1fa8a40) Date: Thu, 31 Jul 2003 14:46:24 +0100 Hi, The DIAGNOSTIC code is checking that if you are looking up entry "." in directory "dir", then the returned node should be the same as the one passed in (ie, "." must be a hard link to the parent directory). You're looking up "." in something that's not a directory, so the lookup has failed. In this case there is no returned vnode, so the check is invalid. For Tom's example, error is definitely "ENOTDIR" at that point. Can you check your core to see if this is definitely the case? Try adding error == 0 to the start of the "if" surrounding the panic: > if (cnp->cn_namelen == 1 && becomes > if (error == 0 && cnp->cn_namelen == 1 && I also figure that the a->a_vpp in the panic line should be *a->a_vpp, so you can actually see the returned vnode, rather than the pointer to its container, as it is, it's comparing apples [vnode *] to oranges [vnode **] Cheers, Peter.