NetBSD-Bugs archive

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

kern/39052: assertion "!ISSET(bp->b_cflags, BC_BUSY)" failed



>Number:         39052
>Category:       kern
>Synopsis:       assertion "!ISSET(bp->b_cflags, BC_BUSY)" failed
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Jun 27 10:05:00 +0000 2008
>Originator:     Manuel Bouyer
>Release:        NetBSD 4.99.66
>Organization:
>Environment:
System: NetBSD admin3-dom0.lip6.fr 4.99.66 NetBSD 4.99.66 (XEN3_DOM0) #206: Thu 
Jun 26 12:20:20 CEST 2008 
bouyer@rock:/dsk/l1/misc/bouyer/tmp/amd64/obj/dsk/l1/misc/bouyer/current/src/sys/arch/amd64/compile/XEN3_DOM0
 amd64
Architecture: x86_64
Machine: amd64
>Description:
        This is a Xen dom0, with 2 linux domUs. The domU's virtual disks
        are backed by files in a FFS.
        The system reliably panics when running the daily scripts with:
panic: kernel diagnostic assertion "!ISSET(bp->b_cflags, BC_BUSY)" failed: file
/dsk/l1/misc/bouyer/current/src/sys/kern/vfs_bio.c", line 1320
fatal breakpoint trap in supervisor mode
trap type 1 code 0 rip ffffffff804abc0d cs e030 rflags 246 cr2  7f7ffdfec000 cp0
Stopped in pid 2726.1 (find) at netbsd:breakpoint+0x5:  leave
breakpoint() at netbsd:breakpoint+0x5
panic() at netbsd:panic+0x255
__kernassert() at netbsd:__kernassert+0x2d
getnewbuf() at netbsd:getnewbuf+0x2c4
getblk() at netbsd:getblk+0x91
bio_doread() at netbsd:bio_doread+0x24
bread() at netbsd:bread+0x22
ffs_read() at netbsd:ffs_read+0x372
VOP_READ() at netbsd:VOP_READ+0x2d
ufs_readdir() at netbsd:ufs_readdir+0x10b
VOP_READDIR() at netbsd:VOP_READDIR+0x39
vn_readdir() at netbsd:vn_readdir+0x10e
sys___getdents30() at netbsd:sys___getdents30+0x89
syscall() at netbsd:syscall+0x98
(I've seen different variations of the stack trace, but it's always FFS doing
getblk()).
Michael van Elst suggested it could be related to locking issues in vnd,
but I don't have more details. Note that the xen backend block device
calls bdev_strategy() from interrupt context, I don't know if it
can have a bad effect. AFAIK, this will cal vndstrategy() which will
enqueue the buffer and wakeup a kernel thread to handle it. This shouldn't
interract at all with the buffer cache.

>How-To-Repeat:
        Run a dom0 with some (linux ?) domUs. Wait for the daily scripts        
        to fire.
>Fix:



Home | Main Index | Thread Index | Old Index