httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Weiming Yin <>
Subject Re: A question about cross request memory/pool usage
Date Mon, 23 Feb 2009 03:25:15 GMT
Hi, Nick

On Fri, Feb 20, 2009 at 3:42 PM, Nick Kew <> wrote:

> On 20 Feb 2009, at 03:14, Weiming Yin wrote:
>  Hi
> [answering here, but in future please post questions like this to the
> modules dev list]
>> I am writing an Apache module, I wanna setup some configure variable in
>> the module via a http request. The variable saved into a apr_hash_t in my
>> own module configure. But in the next request (the fixup handler), the one
>> with saved into the apr_hash_t is disappeared. I don't know why, is the
>> memory pool usage issue?
> Most likely your requests are running in different processes, though you
> don't
> give enough information to be certain.
>  ...
>> var_t *var = apr_palloc(r->pool, sizeof(var_t));
>> apr_hash_set(cfg->var_hash, var->key, APR_HASH_KEY_STRING, var);
> That's problematic for several reasons.   r->pool doesn't have the lifetime
> you want.
> The server pool does, but allocating from it in a request is a memory leak
> and not
> thread-safe.  Likewise setting cfg->hash there is not thread-safe.

I tested the r->server->process->pool, but I got a very strange result.
Sometimes (or some requests) it gives me some right result (the module
remember the variables into the hash), but sometimes it not. I donot know

> Would this be a good time to mention that my book has a Chinese
> translation?

Your book, the new one? Which one, I got a Chinese translated <The Apache
Modules Book> on my hand.
I can find some friends to ask them if the have time and we can translate
the book into Chinese.

> --
> Nick Kew
> Application Development with Apache - the Apache Modules Book

Weiming Yin

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message