9.2-RELEASE amd64 panic: vn_open_cred

Konstantin Belousov kostikbel at gmail.com
Fri Nov 8 08:09:44 UTC 2013


On Fri, Nov 08, 2013 at 05:16:13PM +1300, Matt Magoffin wrote:
> On Nov 8, 2013, at 12:08 PM, Konstantin Belousov <kostikbel at gmail.com> wrote:
> 
> >> From a 9.2 amd64 virtual machine, this is what I get:
> >> 
> >> (kgdb) list *VOP_ADD_WRITECOUNT_APV+0x78
> >> 0xffffffff80d96898 is in VOP_ADD_WRITECOUNT_APV (vnode_if.c:4236).
> >> 4231	in vnode_if.c
> >> 
> >> Does this help?
> >> 
> > I need the code around this line; corresponding file is generated, I
> > do not have it.
> 
> I generated vnode_if.c using this command:
> 
> /usr/bin/awk -f /usr/src/sys/tools/vnode_if.awk /usr/src/sys/kern/vnode_if.src -c
> 
> I just inferred that command, I do not know if that is correct. Here are lines 4219-4264 from the file:
> 
> int
> VOP_ADD_WRITECOUNT_APV(struct vop_vector *vop, struct vop_add_writecount_args *a)
> {
> 	int rc;
> 
> 	VNASSERT(a->a_gen.a_desc == &vop_add_writecount_desc, a->a_vp,
> 	    ("Wrong a_desc in vop_add_writecount(%p, %p)", a->a_vp, a));
> 	while(vop != NULL && \
> 	    vop->vop_add_writecount == NULL && vop->vop_bypass == NULL)
> 		vop = vop->vop_default;
> 	VNASSERT(vop != NULL, a->a_vp, ("No vop_add_writecount(%p, %p)", a->a_vp, a));
> 	SDT_PROBE(vfs, vop, vop_add_writecount, entry, a->a_vp, a, 0, 0, 0);
> 
> 	ASSERT_VI_UNLOCKED(a->a_vp, "VOP_ADD_WRITECOUNT");
> 	ASSERT_VOP_ELOCKED(a->a_vp, "VOP_ADD_WRITECOUNT");
> 	VFS_PROLOGUE(a->a_vp->v_mount);
So which line is 4236 ? That one ^^^^ ?

If yes, I absolutely need you to obtain core dump and than print *a
and *(a->a_vp) from the debugger, to make further progress.

> 	if (vop->vop_add_writecount != NULL)
> 		rc = vop->vop_add_writecount(a);
But, if I mis-counted and the line 4236 is that one ^^^^, than together
with the panic message
panic: vm_fault: fault on nofault entry, addr: ffffff836e0fc000
which suggests that vop_add_writecount not NULL but garbage, I believe
that your issue is stale module, compiled on 9.1 but used on 9.2.

> 	else
> 		rc = vop->vop_bypass(&a->a_gen);
> 	VFS_EPILOGUE(a->a_vp->v_mount);
> 	CTR2(KTR_VOP,
> 	    "VOP_ADD_WRITECOUNT(vp 0x%lX, inc %ld)",
> 	    a->a_vp, a->a_inc);
> 	SDT_PROBE(vfs, vop, vop_add_writecount, return, a->a_vp, a, rc, 0, 0);
> 
> 	if (rc == 0) {
> 		ASSERT_VI_UNLOCKED(a->a_vp, "VOP_ADD_WRITECOUNT");
> 		ASSERT_VOP_ELOCKED(a->a_vp, "VOP_ADD_WRITECOUNT");
> 	} else {
> 		ASSERT_VI_UNLOCKED(a->a_vp, "VOP_ADD_WRITECOUNT");
> 		ASSERT_VOP_ELOCKED(a->a_vp, "VOP_ADD_WRITECOUNT");
> 	}
> 	return (rc);
> }
> 
> struct vnodeop_desc vop_add_writecount_desc = {
> 	"vop_add_writecount",
> 	0,
> 	(vop_bypass_t *)VOP_ADD_WRITECOUNT_AP,
> 	vop_add_writecount_vp_offsets,
> 	VDESC_NO_OFFSET,
> 	VDESC_NO_OFFSET,
> 	VDESC_NO_OFFSET,
> 	VDESC_NO_OFFSET,
> };
> 
> Cheers,
> Matt


-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20131108/4449a7b8/attachment.sig>


More information about the freebsd-stable mailing list