httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Stoddard" <b...@wstoddard.com>
Subject Re: cvs commit: httpd-2.0/server log.c
Date Thu, 17 May 2001 13:15:09 GMT

> stoddard@apache.org 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


Mime
View raw message