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>