WITNESS for pthreads
Randall Stewart
rrs at lakerest.net
Tue Mar 31 12:56:12 PDT 2009
On Mar 31, 2009, at 11:27 AM, John Baldwin wrote:
> On Tuesday 31 March 2009 11:11:02 am Randall Stewart wrote:
>> This was one of the places I was heading (as I wrote privately to
>> Daniel ;-D)
>>
>> I suppose I can share it all i.e. the pthread mutex stuff
>> will of course work with shared mutexe's but it won't:
>>
>> a) Build an easy to use semantic for the app to agree on sharing
>> memory.. i.e. you
>> have left undefined how the process figure out what they are
>> sharing. There is
>> some value in setting up a easy semantic for app dev's to use.
>
> You can use shm_open() to share memory regions by name and then
> create mutexes
> and condvars in that.
Thats what my little ipc_mutex...() functions do ;-)
>
>
>> <i.e. insert the mmap and all the other goo through an additional
>> interface>
>>
>> b) What happens when a process exits or hits a core dump while
>> holding
>> one
>> of these mutex's? Is this what you are thinking the PROCESS_SHARED
>> would
>> do??
>
> There is a "robust" mutex extension David Xu mentioned. Presumably
> though
> what would happen is that when one thread went to block on a mutex,
> the
> kernel (in the umtx code) would see if the current owning thread had
> exited,
> and if so, do something "appropriate" (break the lock, etc.) at that
> time. I
> think a (pid, tid, process starttime) tuple would work ok for
> detecting this.
If that is implemented.. I need to go look into this.. what I found
when I was doing some digging is that umtx was used.. and I saw
no way to make them "robust".. it may be something that needs
adding..
>
>
>> <i.e. I don't think a process by itself can fully solve this... maybe
>> the
>> PROCESS_SHARED could be made to help here>
>>
>> c) If you build something to do <a> so you have some nice way of
>> naming
>> mutex's you can do something similar to our WITNESS option in the
>> kernel... this is something the few times I have played in user
>> space recently that I have missed... having LOR warnings and such
>> can be a useful tool. You can't have this without <a> IMO.
>>
>>
>> I was am interested in a/b but one of my long term intents is to do
>> <c> ;-)
>
> All my WITNESS thoughts are completely separate from PROCESS_SHARED
> mutexes
> and I think actually break PROCESS_SHARED mutexes. (Though perhaps
> they can
> still be made to work but using something far more invasive where
> WITNESS
> defines its own pthread_mutex structure that the app has to be
> compiled
> against.)
Which could also be put in shared memory so that you could learn the
lock
ordering across multiple processes ;-)
R
>
>
> --
> John Baldwin
>
------------------------------
Randall Stewart
803-317-4952 (cell)
803-345-0391(direct)
More information about the freebsd-threads
mailing list