httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Trawick <>
Subject Re: Crash in scoreboard for 2.3.4 after restart (register_hooks)
Date Wed, 02 Dec 2009 20:44:56 GMT
On Wed, Dec 2, 2009 at 3:33 PM, Ruediger Pluem <> wrote:
> On 12/02/2009 09:09 PM, Rainer Jung wrote:
>> Platform: Solaris 8 (sic!)
>> MPM: worker dynamically loaded
>> APR etc: Bundled
>> PCRE: 7.8
>> During testing of 2.3.4 I noticed crashes after restart.
>> I did a build with lots of modules, especially including mod_logio. The
>> scoreboard uses in ap_increment_counts() the optional function
>> ap_logio_get_last_bytes() from mod_logio if available.
>> In my case after restart the memory location of mod_logio and the
>> address of the optional function changed, but the scoreboard still tries
>> to call to the original address retrieved after the initial start.
>> I don't know about the full implementation of the optional functions,
>> but it seems either
>> APR_REGISTER_OPTIONAL_FN(ap_logio_get_last_bytes);
>> in register_hooks in mod_logio needs to run after restarts too, or there
>> is a problem resulting in an unwanted change of load order of the
>> modules during restart. I did not edit the config files between start
>> and restart.
>> The problem happens with normal restarts and graceful restarts.
>> Wild guess: it might have to do with dynamic MPM loading.
> I am not so sure. I guess the problem is that we call
> APR_RETRIEVE_OPTIONAL_FN(ap_logio_get_last_bytes);
> only in ap_calc_scoreboard_size which is IMHO not called at restarts.

That was my guess.  Which reminds me of this old challenge for a module I wrote:

 * XXX
 * our daemon must be created in the pre-mpm hook so that the scoreboard
 * is available in the daemon process; the scoreboard isn't created until
 * the core module's pre-mpm hook
 * BUT: the pre-mpm hook is not called for graceful restart, so we can't
 *      start a new instance of the daemon then
 * BUT: request processing from the daemon MUST use the new configuration,
 *      so we'd be busted for graceful restart

View raw message