[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freebsd-smp
Subject:    Re: Lock order reversal
From:       John Baldwin <jhb () FreeBSD ! ORG>
Date:       2002-02-21 4:32:38
[Download RAW message or body]


On 20-Feb-02 Alfred Perlstein wrote:
> * John Baldwin <jhb@FreeBSD.org> [020220 14:31] wrote:
>> 
>> On 17-Feb-02 Bob Van Valzah wrote:
>> > Sorry if this isn't the right place to report this.  Maybe I should 
>> > sendpr this kind of
>> > thing? Sorry, I don't know the protocol.
>> > 
>> > I shutdown my laptop (running -CURRENT as of Tuesday afternoon) and saw
>> > this:
>> > 
>> > syncing disks.. 6 5 4 3 2 2 1 1
>> > done
>> > lock order reversal
>> >  1st 0xc03a9d40 allproc @ /usr/src/sys/kernvfs_syscalls.c:452
>> >  2nd 0xc2880234 filedesc structure @ /usr/src/sys/kern/vfs_syscalls.c:457
>> > Uptime: 1d14h10m48s
>> > /dev/vmmon: Module vmmon: unloaded
>> >  
>> > The operating system has halted.
>> > Please press any key to reboot.
>> 
>> Yes, this one is a bit tough to fix.  It will probably involve some changes
>> to
>> selwakeup() and possibly struct selinfo as well.  The pfind() in selwakeup()
>> is
>> what ends up being the root cause here.
> 
> Where is selwakeup being called with a filedesc held?

It's not that direct. :)  It's more like filedesc is sometimes held when a bpf
lock is acquired, and the allproc lock is acquired by pfind in selwakeup when
bpf is held sometimes.   So it's not a direct lock order relationship.  My
preferred solution is to remove the pfind from selwakeup if possible, but that
isn't entirely trivial to do.

> -Alfred

-- 

John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-smp" in the body of the message
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic