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

Reply via email to