> [EMAIL PROTECTED] writes:
>
> > stoddard 01/05/17 05:10:26
> >
> > Modified: server log.c
> > Log:
> > Fix a segfault in apr_proc_other_child_unregister. Jeff recently made
> > a change in APR otherchild.c to unregister all OC registrations as
> > part of pool cleanup. This means that we must NOT explicitly call
> > apr_proc_other_child_unregister out of other pool clean-up routines.
> > In this case, the OC cleanup was being called first then the
piped_log_cleanup
> > was being called which called apr_proc_other_child_unregister.
> >
> > We could fix this by detecting the case when there are no more OCs
registered
> > in apr_proc_other_child_unregister but that might just mask other
problems we
> > need to fix anyway.
>
> Ouch... I guess I should add rotatelogs to my configuration :) Sorry!
>
> Note that I don't intend to unregister all OC registrations, just the
> one(s) for the pool being cleaned up. Thus, checking for "no more OCs
> registered" wouldn't be appropriate. You'd have to run the list
> looking for this particular registration.
>
> Not blowing if apr_proc_other_child_unregister() was called for a
> registration already removed might help, but I don't think that
> supporting such application logic is consistent with the rest of APR.
>
We were blowing up because there were in fact no more OCs registered.
other_children was NULL at entry to apr_proc_other_child_unregister(). We
blow up trying to reference fields out of a NULL pointer. The other
potential fix was to check for other_children == NULL and return
immediately. I don;t see how that would be a problem.
Bill