Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Feb 2014 11:47:46 +0800
From:      Julian Elischer <julian@freebsd.org>
To:        Alfred Perlstein <bright@mu.org>, Vijay Singh <vijju.singh@gmail.com>
Cc:        hackers@freebsd.org
Subject:   Re: Debugging rw lock
Message-ID:  <52FD91E2.4080903@freebsd.org>
In-Reply-To: <52FD32FF.70106@mu.org>
References:  <CALCNsJS6vFJU18F3VRR-T2RdtGNxd3fycUCkQ63BmGp29DAUMw@mail.gmail.com> <52FD30D9.6050604@mu.org> <CALCNsJQzeqGh%2BZ0rW2jw9e%2BDfKdaRo9BpOQq7XrjfZ1EzNDFYQ@mail.gmail.com> <52FD32FF.70106@mu.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2/14/14, 5:02 AM, Alfred Perlstein wrote:
>
> On 2/13/14, 12:59 PM, Vijay Singh wrote:
>> You're talking about instrumenting the code, right? But which 
>> thread? I was
>> thinking of augmenting the rw lock to record the readers, but 
>> wanted to
>> check if something is possible without instrumentation.
>
> If rw locks are implemented using low level atomics then you're 
> going to make the very slow and have a LOT of work to do as opposed 
> to just using a thread specific storage to implement it. You're 
> better off just making use of the fact that only "curthread" can 
> access the per-thread stack and just use that.  Or at least that's 
> how it works in my brain.

maybe do it the other way around and count the read locks a thread 
has.. then when there is a problem go see what they hold..
(or add the ability to detail 10 locks each or something)
>
> -Alfred
>
>
>>
>>
>> On Thu, Feb 13, 2014 at 12:53 PM, Alfred Perlstein <bright@mu.org> 
>> wrote:
>>
>>> Keep a stack of rwlocks owned in the struct thread.
>>>
>>> -Alfred
>>>
>>> On 2/13/14, 12:51 PM, Vijay Singh wrote:
>>>
>>>> I am running into an issue where an rw lock is read locked and never
>>>> unlocked, and causes a system to livelock. I was wondering if its 
>>>> possible
>>>> to figure out which thread owns the read lock?
>>>>
>>>> It's the tcp pcbinfo lock.
>>>>
>>>> (kgdb-amd64-7.4-08) show_rwlock rw
>>>>    name : tcp
>>>>    class: rw
>>>>    flags: {SLEEP, INITED, WITNESS, RECURSE, UPGRADABLE}
>>>>    state: RLOCK: 1 locks
>>>>    waiters: writers
>>>>
>>>> Any help is appreciated.
>>>>
>>>> -vijay
>>>> _______________________________________________
>>>> freebsd-hackers@freebsd.org mailing list
>>>> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>>>> To unsubscribe, send any mail to 
>>>> "freebsd-hackers-unsubscribe@freebsd.org
>>>> "
>>>>
>>>>
>> _______________________________________________
>> freebsd-hackers@freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>> To unsubscribe, send any mail to 
>> "freebsd-hackers-unsubscribe@freebsd.org"
>>
>
> _______________________________________________
> freebsd-hackers@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to 
> "freebsd-hackers-unsubscribe@freebsd.org"
>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?52FD91E2.4080903>