err - asking obvious question but .. Your LogLevel is set to debug right ?
-srp
On 06/05/07, Joachim Zobel <[EMAIL PROTECTED]> wrote:
Am Samstag, den 05.05.2007, 13:44 -0400 schrieb Tom Donovan:
> > static apr_pool_t *p_cur = NULL;
> >
> > void xml2_set_current_pool(apr_pool_t * p)
> > {
> > // Needed for free-logging
> > p_cur = p;
> > }
> >
> > static void xml2_child_init(apr_pool_t * p, server_rec * s)
> > {
> > xml2_set_current_pool(p);
> > ....
> >
> > In a function called from an external library I do
> >
> > static void xml2_free(void *emem)
> > {
> > ......
> >
> > ap_log_perror(APLOG_MARK, APLOG_DEBUG, 0, p_cur,
> > "xml2_free will free %x.", mem);
> > free(mem);
> > }
> >
> Two things:
>
> 1. You won't want to save the pool in a *static* p_cur if you have a
> threaded Apache. All the threads will clobber each others' p_cur values.
> You might get away with this using Apache 1.3 (or with the prefork mpm).
This is just for debugging and will be removed, and I am on prefork.
> 2. The argument to xml2_free is named 'emem', but you pass 'mem' to
> ap_log_perror. Just a typo? Is 'mem' related to 'emem' somehow?
Yes, but it is not of importance.
static void xml2_free(void *emem)
{
if (!emem) {
return;
}
void *mem = (char *) emem - sizeof(MARK);
const char **mark = mem;
if (*mark == MARK) {
ap_log_perror(APLOG_MARK, APLOG_DEBUG, 0, p_cur,
"xml2_free will free %x.", mem);
free(mem);
}
}
Actually I should write a test module to isolate the problem. Either
I'll find it doing that or I'll end up wih an apache bug.
Sincerely,
Joachim