httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christophe Jaillet" <>
Subject Re: Question about memory in httpd
Date Sun, 04 Dec 2005 21:43:06 GMT
First of all, thank you for this interresting point of view.

Ok with your comments, but :
    1) apache is not supposed to run *only* on linux and freebsd

    2) if checking memory allocation is really not a concern, should places
in httpd that checks for NULL be removed ?
For exemple, in /modules/proxy/ajp_msg.c
    msg->buf = (apr_byte_t *)apr_palloc(pool, AJP_MSG_BUFFER_SZ);

    /* XXX: This should never happen
     * In case if the OS cannont allocate 8K of data
     * we are in serious trouble
     * No need to check the alloc return value, cause the
     * core dump is probably the best solution anyhow.
    if (msg->buf == NULL) {
        ap_log_error(APLOG_MARK, APLOG_ERR, 0, NULL,
                      "ajp_msg_create(): can't allocate AJP message
        return APR_ENOPOOL;


    3) in some places, memory allocation can be delayed a bit, do you think
it could be interesting to dig futher in this direction and see if it could
be a win ?
For exemple, in /modules/generators/mod_status.c in function status_handler,
    pid_buffer = apr_palloc(r->pool, server_limit * sizeof(pid_t));
    stat_buffer = apr_palloc(r->pool, server_limit * thread_limit *

could be set moved around line 312 (instead of 257).
In this case,
        - httpd would maybe not require at all this memory (if one of the
tests at the beginning fails)
        - httpd would request for the memory (a bit) latter


"Paul Querna" <> a écrit dans le message de
> Christophe Jaillet wrote:
> > When going thrue the code, looking at apr_palloc and friends, one can
> > that :
> >     * in some places (few of them) , the returned pointer is checked
> > NULL
> >     * in other places (most of them), it is not.
> >
> > I've always been told that checking return value is a good idea,
> > with memory allocation in order to avoid disasters) so should all the
> > apr_palloc (and friends) calls be checked or are they special reasons in
> > httpd not to care about short in memory situation ?
> Actually, on most operating systems, including Linux and FreeBSD, you
> will NEVER get returned NULL.
> Instead when your operating system is truly out of memory, it will kill
> your process, and you won't have any chance of handling it.
> Read a whole blog post about it:
> -Paul

View raw message