You don't need apr_*_mutex_join, that is what apr_*_mutex_child_init is
supposed to do, but it can't, because the API doesn't work.  The simple
fact that you needed to insert a new method to do exactly what an existing
method does proves that the API is currently broken.

Now, the reason that this patch doesn't actually fix the problem is that
you haven't read my post about how to solve this problem.  Some mutex
types can't be shared without using fork.  Unless you take that into
account, your fix isn't correct.

However, my free time just went to hell in a handbasket, so even my
answering this post is something I really shouldn't have done.

Ryan

On Fri, 4 Jun 2004, Justin Erenkrantz wrote:

> I took a look at the locking problem, and I think it can be fixed rather
> trivially.  This is a minor problem in that it only affects the case where the
> child doesn't share memory addresses - such as when happens by using
> apr_proc_create.  Hence, adding an 'apr_*_mutex_join' could solve the problem.
>
> Here's my 2am approach for solving this - now the testglobalmutex passes for
> FCNTL on Solaris.  The others would need 'stub' implementations for join
> implemented - or their join could call create if no special work is needed.
>
> But, now that I understand the problem, I still don't see why this would be
> considered a 1.0 showstopper.  It can be fixed in 1.1 quite easily without
> breaking any existing API calls.  I will leave it to those who care to finish
> this patch, if they so desire...  -- justin

Reply via email to