Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 07 Dec 2002 18:32:59 -0500 (EST)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Robert Watson <rwatson@FreeBSD.ORG>
Cc:        alfred@FreeBSD.ORG, current@FreeBSD.ORG, Lars Eggert <larse@ISI.EDU>, Kris Kennaway <kris@obsecurity.org>
Subject:   Re: LOR: filedesc structure -> pipe mutex
Message-ID:  <XFMail.20021207183259.jhb@FreeBSD.org>
In-Reply-To: <Pine.NEB.3.96L.1021207090124.9402I-100000@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On 07-Dec-2002 Robert Watson wrote:
> BTW, one upshot of this whole event is that we should probably be
> hard-coding the lock order of all important locks rather than allowing it
> to be automatically determined.  We'd uncover problems of this sort much
> faster and much more easily, and it would provide better documentation of
> the intended lock order.  Also, the authors of the following locking bits
> should document them in the SMPng architecture document:
> 
> - File descriptor locking
> - Pipe locking
> - Select locking
> - Process locking
> 
> I've gone ahead and documented the SIGIO locking, and I might get to the
> rest sometime also, but it would be a lot faster if the people who did the
> work documented it rather than having to rely on a lot of code reading to
> figure out the subtleties.
> 
> Do we know if WITNESS supports the notion of a partial order, in which it
> is simply asserted that there is no valid locking order between two locks?

You mean that it is not ok to obtain lock A while holdig lock B and it is not
ok to obtain lock B while holding lock A?   It doesn't really support that
right now, no.

> Robert N M Watson             FreeBSD Core Team, TrustedBSD Projects
> robert@fledge.watson.org      Network Associates Laboratories
> 
> On Fri, 6 Dec 2002, Kris Kennaway wrote:
> 
>> On Fri, Dec 06, 2002 at 07:18:03PM -0800, Lars Eggert wrote:
>> 
>> > >I'm getting this too:
>> 
>> After discussing this with various people on IRC, it was determined
>> that this is not the place where the reversal is occurring, but since
>> witness doesn't have the lock order defined it has to guess, and in
>> this instance it is guessing the wrong way around.  After adding the
>> lock order to subr_witness.c I now get this:
>> 
>> lock order reversal
>>  1st 0xc41bc418 process lock (process lock) @ /local0/src-client/sys/kern/kern_descrip.c:2094
>>  2nd 0xc42de934 filedesc structure (filedesc structure) @
>>  /local0/src-client/sys/kern/kern_descrip.c:2101
>> Debugger("witness_lock")
>> Stopped at      Debugger+0x45:  xchgl   %ebx,in_Debugger.0
>> db> trace
>> Debugger(c037a085) at Debugger+0x45
>> witness_lock(c42de934,8,c039e3cc,835,c41bc418) at witness_lock+0x532
>> _mtx_lock_flags(c42de934,0,c039e3cc,835,0) at _mtx_lock_flags+0x7f
>> sysctl_kern_file(c03d8a00,0,0,d7aaac08) at sysctl_kern_file+0x119
>> sysctl_root(0,d7aaacb4,2,d7aaac08,c0416240) at sysctl_root+0x116
>> userland_sysctl(c3f84a80,d7aaacb4,2,bfbfe588,bfbff3f8) at userland_sysctl+0xec
>> __sysctl(c3f84a80,d7aaad14,6,1,297) at __sysctl+0x71
>> syscall(2f,2f,2f,2,bfbfe588) at syscall+0x211
>> Xint0x80_syscall() at Xint0x80_syscall+0x1d
>> --- syscall (202, FreeBSD ELF32, __sysctl), eip = 0x805a717, esp = 0xbfbfe53c, ebp = 0xbfbfe568
>> ---
>> db>
>> 
>> Index: sys/kern/subr_witness.c
>> ===================================================================
>> RCS file: /home/ncvs/src/sys/kern/subr_witness.c,v
>> retrieving revision 1.130
>> diff -u -r1.130 subr_witness.c
>> --- sys/kern/subr_witness.c     11 Nov 2002 16:36:20 -0000      1.130
>> +++ sys/kern/subr_witness.c     7 Dec 2002 04:18:29 -0000
>> @@ -198,6 +198,8 @@
>>      { "Giant", &lock_class_mtx_sleep },
>>      { "proctree", &lock_class_sx },
>>      { "allproc", &lock_class_sx },
>> +    { "filedesc structure", &lock_class_mtx_sleep },
>> +    { "pipe mutex", &lock_class_mtx_sleep },
>>      { "sigio lock", &lock_class_mtx_sleep },
>>      { "process group", &lock_class_mtx_sleep },
>>      { "process lock", &lock_class_mtx_sleep },
>> 
> 

-- 

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-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.20021207183259.jhb>