NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/39548: kernel debugging assertion "(vp->v_flag & VONWORKLST)" failed



The following reply was made to PR kern/39548; it has been noted by GNATS.

From: Antti Kantee <pooka%cs.hut.fi@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: 
Subject: Re: kern/39548: kernel debugging assertion "(vp->v_flag & VONWORKLST)" 
failed
Date: Wed, 17 Sep 2008 18:57:24 +0300

 On Mon Sep 15 2008 at 01:30:00 +0000, Simon Burge wrote:
 > System: NetBSD thoreau 4.0_STABLE NetBSD 4.0_STABLE (THOREAU) #6: Tue Jul 15 
 > 00:48:08 EST 2008 simonb@thoreau:/usr/obj/sys/arch/i386/compile/THOREAU i386
 > 
 > panic: kernel debugging assertion "(vp->v_flag & VONWORKLST)" failed: file 
 > "./sys/miscfs/genfs/genfs_vnops.c", line 1283
 > 
 >      panic just after starting to move some large files from one
 >      filesystem to another.  I was in X at the time, but do have a
 >      crash dump.  The backtrace is:
 > 
 > #17 0xc045978c in panic (
 >     fmt=0xc099211c "kernel %sassertion \"%s\" failed: file \"%s\", line %d")
 >     at ./sys/kern/subr_prf.c:235
 > #18 0xc075a8a6 in __assert (t=0xc08f1884 "debugging ", 
 >     f=0xc095eb88 "./sys/miscfs/genfs/genfs_vnops.c", l=1283, 
 >     e=0xc09053c6 "(vp->v_flag & VONWORKLST)")
 >     at ../.././sys/lib/libkern/__assert.c:45
 > #19 0xc0499f6f in genfs_do_putpages (vp=0xd4c3d938, startoff=259100672, 
 >     endoff=259104768, flags=9, busypg=0x0)
 >     at ./sys/miscfs/genfs/genfs_vnops.c:1283
 > #20 0xc0499fe9 in genfs_putpages (v=0xcfe81b60)
 >     at ./sys/miscfs/genfs/genfs_vnops.c:1055
 > #21 0xc0496ccc in VOP_PUTPAGES (vp=0xd4c3d938, offlo=0, offhi=0, flags=9)
 >     at ./sys/kern/vnode_if.c:1592
 > #22 0xc03f3cc5 in uvn_put (uobj=0xd4c3d938, offlo=259100672, 
 > offhi=259104768, 
 >     flags=9) at ./sys/uvm/uvm_vnode.c:273
 > #23 0xc03ef9b3 in uvm_pageout (arg=0xcf418c1c) at ./sys/uvm/uvm_pdaemon.c:732
 > #24 0xc01002e1 in proc_trampoline ()
 > 
 >      The eariler frames are for a secondary "panic: wdc_exec_command:
 >      polled command not done" panic that happened after the dump (and
 >      then it proceeded to dump again!).
 > 
 >      This is with a UP kernel on a machine with 2GB of RAM, a mix of
 >      raidframe and standalone disks (swap is to a RF mirror).  The
 >      kernel has DIAGNOSTIC, LOCKDEBUG, DEBUG.
 
 Looks like a bad case of race condition between moving the vnode on
 and off the worklist and a conflict between the syncer and pagedaemon.
 I think you need to get memory exhausted and the pagedaemon interested
 in the situation and a case of very bad luck.
 
 Since this code has changed much for -current, I'd say a) sacrifice
 more chicken (poulet de bresse preferred) b) run without DEBUG or c)
 remove the KDASSERT and compile a new kernel.
 
 But, you could still print the vnode and append to the PR.  Also,
 applying meditation and trying to figure out what exactly protects
 VONWORKLST can't hurt.
 


Home | Main Index | Thread Index | Old Index