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.

The diff between pmap of the main process after initial start and after restart is:

--- pmap_22741_a        2009-12-02 21:02:46.000000000 +0100
+++ pmap_22741_c        2009-12-02 21:03:44.000000000 +0100
@@ -12,19 +12,19 @@
 FDF0C000      8K read/write/exec     [ anon ]
 FDF10000      8K read/write/exec     [ anon ]
 FE00E000      8K read/write/exec     [ anon ]
-FE370000 24K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_status.so -FE384000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_status.so -FE390000 8K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_unixd.so -FE3A0000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_unixd.so -FE3B0000 40K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_mpm_worker.so -FE3C8000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_mpm_worker.so -FE3D0000 8K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_logio.so -FE3E0000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_logio.so
 FE3F0000      8K read/write/exec     [ anon ]
+FEA80000    496K read/write/shared   [ anon ]
 FEB20000    240K read/write/shared   [ anon ]
FEB60000 8K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/lib/apr-util-1/apr_ldap-1.so FEB70000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/lib/apr-util-1/apr_ldap-1.so
-FEB80000    496K read/write/shared   [ anon ]
+FEBA0000 24K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_status.so +FEBB4000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_status.so +FEBC0000 8K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_unixd.so +FEBD0000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_unixd.so +FEBE0000 40K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_mpm_worker.so +FEBF8000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_mpm_worker.so +FEC00000 8K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_logio.so +FEC10000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_logio.so FEC20000 24K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_log_config.so FEC34000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_log_config.so FEC40000 48K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_ldap.so
@@ -38,14 +38,14 @@
FECD0000 8K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_auth_basic.so FECE0000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_auth_basic.so
 FECF0000      8K read/write/exec     [ anon ]
-FED00000 8K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_access_compat.so -FED10000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_access_compat.so +FED00000 32K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_authnz_ldap.so +FED16000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_authnz_ldap.so
 FED20000    216K read/exec         /usr/lib/libresolv.so.2
 FED66000     24K read/write/exec   /usr/lib/libresolv.so.2
 FED70000    144K read/exec         /usr/lib/libldap.so.4
 FEDA4000     16K read/write/exec   /usr/lib/libldap.so.4
-FEDB0000 32K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_authnz_ldap.so -FEDC6000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_authnz_ldap.so +FEDB0000 8K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_access_compat.so +FEDC0000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_access_compat.so FEDD0000 16K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_authz_core.so FEDE2000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_authz_core.so FEDF0000 8K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_authz_dbd.so
@@ -72,7 +72,7 @@
FEF40000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_authn_dbm.so FEF50000 8K read/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_authn_file.so FEF60000 8K read/write/exec /shared/build/autobuild/workdirs/20091202a-httpd-2.3.4/run/modules/mod_authn_file.so
-FEF70000      8K read/write/exec/shared  [ shmid=0xc02 ]
+FEF70000      8K read/write/exec/shared  [ shmid=0xd02 ]
 FEF84000      8K read/write/exec     [ anon ]
 FEF90000      8K read/write/exec     [ anon ]
 FEFA0000    112K read/exec         /usr/lib/libthread.so.1

The address used for pfn_ap_logio_get_last_bytes is '0xfe3d0ad4' after start and after restart (which is wrong).

Any ideas?

I can easily reproduce and debug further once there is an idea which code to look at.

Regards,

Rainer

Reply via email to