kern/53004: union_lookup returning . (0xbc332e90) not same as
peter.edwards at openet-telecom.com
Thu Jul 31 07:00:28 PDT 2003
The following reply was made to PR kern/53004; it has been noted by GNATS.
From: Peter Edwards <peter.edwards at openet-telecom.com>
To: freebsd-gnats-submit at FreeBSD.org, scrappy at hub.org
Cc: alsbergt at 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
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 &&
> 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 **]
More information about the freebsd-bugs