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