Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 31 Mar 2009 11:27:06 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Randall Stewart <rrs@lakerest.net>
Cc:        freebsd-threads@freebsd.org
Subject:   Re: WITNESS for pthreads
Message-ID:  <200903311127.06447.jhb@freebsd.org>
In-Reply-To: <F0D957B2-E451-4F83-8C30-4A73140470B6@lakerest.net>
References:  <7D4F6788-0F12-4863-9635-7FADA9115D16@lakerest.net> <200903311038.43401.jhb@freebsd.org> <F0D957B2-E451-4F83-8C30-4A73140470B6@lakerest.net>

next in thread | previous in thread | raw e-mail | index | archive | help
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.

> <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.

> <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.)

-- 
John Baldwin



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