httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard.Hall" <>
Subject [users@httpd] 1.3.41 http_main.c old_listeners uninitialized
Date Mon, 09 Jun 2008 12:14:55 GMT
First post, apologies for any breaches of netiquette.

Searched the archives as best I could, can't see anything directly
relevant (but my archive-searching abilities are notoriously poor.)

Trying to compile Apache 1.3.41 + various modules. on SPARC Solaris 8, gcc
3.4.2. Compiles ok, but it crashes on startup. (Or at least it did for
quite a lot of attempts, although it now seems to survive.)

I'll leave out the diagnostics for the moment, but if anyone wants them I
can try to dredge up what I've kept. Suffice it to say, my thrashing about
in the code led me to the following in main/http_main.c, lines 4026-4033

> static listen_rec *old_listeners;
> /* unfortunately copy_listeners may be called before listeners is a ring */
> static void copy_listeners(pool *p)
> {
>     listen_rec *lr;
>     ap_assert(old_listeners == NULL);

It concerns me that old_listeners is uninitialized. So much so that I made
the following change:-

$ diff src/main/http_main.c.orig src/main/http_main.c
< static listen_rec *old_listeners;
> static listen_rec *old_listeners = (listen_rec *)0x12345;

(i.e. give it a completely(?) duff value), and I can now consistently get

[Mon Jun  9 12:34:29 2008] file http_main.c, line 4033, assertion
"old_listeners == NULL" failed

in the error_log. (The initial crashes weren't giving me that; OTOH they
weren't giving me the SIGABRT that ap_assert should lead to either, but a
'SIGBUS BUS_ADRALN; go figure)

So - the fix seems simple ...

$ diff src/main/http_main.c.orig src/main/http_main.c
< static listen_rec *old_listeners;
> static listen_rec *old_listeners = NULL;

and I haven't been able to break it since (admittedly with limited
testing) ... BUT BUT BUT .... this particular bit of code looks really old
- can I really be the first person ever to hit this? OK, there's a fair
chance that uninitialized data gets set to zero, but no-one? ever?

Please feel free to point out where I am being an idiot.


The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:> for more info.
To unsubscribe, e-mail:
   "   from the digest:
For additional commands, e-mail:

View raw message