6-current: udf broken, "locking against myself"
Martin Cracauer
cracauer at cons.org
Mon Jul 11 22:03:14 GMT 2005
Further testing 6-current. Seems like the udf filesystem is hosed, I
cannot even use a minimal one.
Mounting a udf (data) filesystem works, but the first attempt to use it
results in
"panic: lockmgr: locking against myself".
I put an minimal testing image on:
http://wavehh.dyndns.org/tmp/ll.udf.gz
It has been created with `mkisofs -udf dir` # no other options to mkisofs
Reproduce error:
$ mdconfig -a -t vnode -f ll.udf
md4
$ mount_udf /dev/md4 /mnt/tmp # works
$ cd /mnt/tmp # still works
$ ls # panic
This is a single-processor i386 machine with a single-processor
kernel. Info on this machine (dmesg, pciconf, kernel config etc.) is
on http://www.cons.org/cracauer/machines/grisu/
A quick check on a 2-processor box with SMP support shows the same
panic.
Here are the symboled parts of the backtrace:
#23 0xc05888e0 in kdb_enter (msg=0x0) at cpufunc.h:60
#24 0xc056a4f5 in panic (fmt=0xc077896e "lockmgr: locking against myself")
at ../../../kern/kern_shutdown.c:537
#25 0xc055baad in lockmgr (lkp=0xc2e27168, flags=12290, interlkp=0x80,
td=0xc2d6b600) at ../../../kern/kern_lock.c:329
#26 0xc05ca1cf in vop_stdlock (ap=0x0) at ../../../kern/vfs_default.c:258
#27 0xc074e364 in VOP_LOCK_APV (vop=0xc07b7500, a=0xf7cd8994)
at vnode_if.c:1642
#28 0xc05e481c in vn_lock (vp=0xc2e27110, flags=4098, td=0xc2d6b600)
at vnode_if.h:844
[addresses without symbols]
#56 0xc074d40e in VOP_CACHEDLOOKUP_APV (vop=0x0, a=0x0) at vnode_if.c:150
vnode_if.c:1642 is generated, it looks like this in this kernel (line
marked in # comment).
int
VOP_LOCK_APV(struct vop_vector *vop, struct vop_lock_args *a)
{
int rc;
VNASSERT(a->a_gen.a_desc == &vop_lock_desc, a->a_vp,
("Wrong a_desc in vop_lock(%p, %p)", a->a_vp, a));
while(vop != NULL && \
vop->vop_lock == NULL && vop->vop_bypass == NULL)
vop = vop->vop_default;
VNASSERT(vop != NULL, a->a_vp, ("No vop_lock(%p, %p)", a->a_vp, a));
vop_lock_pre(a);
if (vop->vop_lock != NULL)
rc = vop->vop_lock(a); # this is the panic line 1642
else
rc = vop->vop_bypass(&a->a_gen);
CTR3(KTR_VOP,
"VOP_LOCK(vp 0x%lX, flags %ld, td 0x%lX)",
a->a_vp, a->a_flags, a->a_td);
if (rc == 0) {
} else {
}
vop_lock_post(a, rc);
return (rc);
}
Now, since I don't have anything useful in the backtrace, how do I go
about debugging an error like this?
Martin
--
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Martin Cracauer <cracauer at cons.org> http://www.cons.org/cracauer/
No warranty. This email is probably produced by one of my cats
stepping on the keys. No, I don't have an infinite number of cats.
More information about the freebsd-current
mailing list