cvs commit: src/sys/kern kern_lockf.c
Doug Rabson
dfr at rabson.org
Wed Mar 19 01:59:05 PDT 2008
On 19 Mar 2008, at 07:13, Jeff Roberson wrote:
> jeff 2008-03-19 07:13:24 UTC
>
> FreeBSD src repository
>
> Modified files:
> sys/kern kern_lockf.c
> Log:
> - Fix the last of the threading bugs that were introduced as far
> back as
> 1.38 in 2001. Break out of the FOREACH_THREAD_IN_PROC loop when
> we've
> discovered a new proc in the chain.
> - Increment i and check for maxlockdepth once per matching process
> not
> once per thread. This didn't properly terminate the loop before.
> - Fix a bug which has existed potentially since rev 1.1.
> waitblock->lf_next
> can be NULL when a thread has been woken-up but not yet
> scheduled. Check
> for this condition rather than blindly dereferencing.
>
> Found by: libMicro
>
> Revision Changes Path
> 1.59 +12 -6 src/sys/kern/kern_lockf.c
I have completely removed all this proc tomfoolery in my perforce
branch and have replaced it with a real deadlock detection system
instead of this horrible code. Apart from anything else, the existing
code has serious locking problems - if the deadlock loop spans two or
more vnodes, it doesn't lock any but the first one.
I should have a patch ready for review (along with the new kernel NFS
lock manager) towards the end of this week and I hope to get the thing
into -current some time next week.
More information about the cvs-src
mailing list