We have a mod_perl application that needs to connect to the database during
Apache startup to prefetch some data. The database handle for this is not
stored or re-used in any way.

According to the documentation, Apache::DBI does not cache database connections
made during server startup, so I should be fine. Unfortunately as soon as I
uncomment the lines in my ApacheHandler that connect to the database during
startup the Apache children throw segmentation faults on subsequent requests.

AFAIK the connection made during startup is not supposed to clash with the
connections made on a per-child basis during the handler() method via
DBI->connect() because it never gets cached anyway. But it seems that exactly
that is happening (Apache::DBI correctly warns me with "skipping connection
during server startup, read the docu").

The system looks like this:

- Ubuntu Feisty with apache-perl.
- stock Ubuntu Perl 5.8.8 (which unfortunately comes with threads)
- self-rolled DBD::mysql (against libmysqlclient15-dev), DBI and Apache::DBI

Here's the gdb output for the coredump:

This GDB was configured as "i486-linux-gnu"...
(no debugging symbols found)
Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".

warning: Can't read pathname for load map: Input/output error.
Reading symbols from /lib/tls/i686/cmov/libm.so.6...(no debugging symbols
found)...done.
Loaded symbols for /lib/tls/i686/cmov/libm.so.6
Reading symbols from /lib/tls/i686/cmov/libpthread.so.0...(no debugging symbols
found)...done.
Loaded symbols for /lib/tls/i686/cmov/libpthread.so.0
Reading symbols from /lib/tls/i686/cmov/libcrypt.so.1...(no debugging symbols
found)...done.
Loaded symbols for /lib/tls/i686/cmov/libcrypt.so.1
Reading symbols from /usr/lib/libdb-4.4.so...(no debugging symbols
found)...done.
Loaded symbols for /usr/lib/libdb-4.4.so
Reading symbols from /usr/lib/libperl.so.5.8...
(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libperl.so.5.8
Reading symbols from /lib/tls/i686/cmov/libdl.so.2...(no debugging symbols
found)...done.
Loaded symbols for /lib/tls/i686/cmov/libdl.so.2
Reading symbols from /lib/tls/i686/cmov/libc.so.6...(no debugging symbols
found)...done.
Loaded symbols for /lib/tls/i686/cmov/libc.so.6
Reading symbols from /usr/lib/libexpat.so.1...(no debugging symbols
found)...done.
Loaded symbols for /usr/lib/libexpat.so.1
Reading symbols from /lib/ld-linux.so.2...
(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /usr/local/lib/perl/5.8.8/auto/Cwd/Cwd.so...done.
Loaded symbols for /usr/local/lib/perl/5.8.8/auto/Cwd/Cwd.so
Reading symbols from /usr/local/lib/perl/5.8.8/auto/List/Util/Util.so...done.
Loaded symbols for /usr/local/lib/perl/5.8.8/auto/List/Util/Util.so
Reading symbols from /usr/lib/perl/5.8.8/auto/Fcntl/Fcntl.so...done.
Loaded symbols for /usr/lib/perl/5.8/auto/Fcntl/Fcntl.so
Reading symbols from /usr/lib/perl/5.8.8/auto/IO/IO.so...done.
Loaded symbols for /usr/lib/perl/5.8/auto/IO/IO.so
Reading symbols from /usr/lib/perl5/auto/HTML/Parser/Parser.so...done.
Loaded symbols for /usr/lib/perl5/auto/HTML/Parser/Parser.so
Reading symbols from /usr/lib/perl/5.8.8/auto/File/Glob/Glob.so...done.
Loaded symbols for /usr/lib/perl/5.8/auto/File/Glob/Glob.so
Reading symbols from /usr/lib/perl/5.8.8/auto/Data/Dumper/Dumper.so...done.
Loaded symbols for /usr/lib/perl/5.8/auto/Data/Dumper/Dumper.so
Reading symbols from /usr/lib/perl/5.8.8/auto/B/B.so...done.
Loaded symbols for /usr/lib/perl/5.8/auto/B/B.so
Reading symbols from
/usr/local/lib/perl/5.8.8/auto/Apache/Request/Request.so...done.
Loaded symbols for /usr/local/lib/perl/5.8.8/auto/Apache/Request/Request.so
Reading symbols from /usr/lib/perl5/auto/Apache/Symbol/Symbol.so...done.
Loaded symbols for /usr/lib/perl5/auto/Apache/Symbol/Symbol.so
Reading symbols from /usr/local/lib/perl/5.8.8/auto/DBI/DBI.so...done.
Loaded symbols for /usr/local/lib/perl/5.8.8/auto/DBI/DBI.so
Reading symbols from /usr/lib/perl/5.8.8/auto/MIME/Base64/Base64.so...done.
Loaded symbols for /usr/lib/perl/5.8/auto/MIME/Base64/Base64.so
Reading symbols from /usr/local/lib/perl/5.8.8/auto/Digest/SHA/SHA.so...done.
Loaded symbols for /usr/local/lib/perl/5.8.8/auto/Digest/SHA/SHA.so
Reading symbols from
/usr/local/lib/perl/5.8.8/auto/Apache/Cookie/Cookie.so...done.
Loaded symbols for /usr/local/lib/perl/5.8.8/auto/Apache/Cookie/Cookie.so
Reading symbols from /usr/lib/perl/5.8.8/auto/Sys/Hostname/Hostname.so...done.
Loaded symbols for /usr/lib/perl/5.8/auto/Sys/Hostname/Hostname.so
Reading symbols from /usr/lib/perl/5.8.8/auto/Socket/Socket.so...done.
Loaded symbols for /usr/lib/perl/5.8/auto/Socket/Socket.so
Reading symbols from /usr/local/lib/perl/5.8.8/auto/Date/Calc/Calc.so...done.
Loaded symbols for /usr/local/lib/perl/5.8.8/auto/Date/Calc/Calc.so
Reading symbols from /usr/local/lib/perl/5.8.8/auto/Digest/SHA1/SHA1.so...done.
Loaded symbols for /usr/local/lib/perl/5.8.8/auto/Digest/SHA1/SHA1.so
Reading symbols from /usr/lib/perl/5.8.8/auto/Storable/Storable.so...done.
Loaded symbols for /usr/lib/perl/5.8/auto/Storable/Storable.so
Reading symbols from /usr/lib/perl/5.8.8/auto/Digest/MD5/MD5.so...done.
Loaded symbols for /usr/lib/perl/5.8/auto/Digest/MD5/MD5.so
Reading symbols from /usr/local/lib/perl/5.8.8/auto/DBD/mysql/mysql.so...done.
Loaded symbols for /usr/local/lib/perl/5.8.8/auto/DBD/mysql/mysql.so
Reading symbols from /usr/lib/libmysqlclient.so.15...done.
Loaded symbols for /usr/lib/libmysqlclient.so.15
Reading symbols from /lib/tls/i686/cmov/libnsl.so.1...done.
Loaded symbols for /lib/tls/i686/cmov/libnsl.so.1
Reading symbols from /usr/lib/libz.so.1...done.
Loaded symbols for /usr/lib/libz.so.1
Reading symbols from /lib/tls/i686/cmov/libnss_files.so.2...done.
Loaded symbols for /lib/tls/i686/cmov/libnss_files.so.2
Reading symbols from /lib/libnss_mdns4_minimal.so.2...done.
Loaded symbols for /lib/libnss_mdns4_minimal.so.2
Reading symbols from /lib/tls/i686/cmov/libnss_dns.so.2...done.
Loaded symbols for /lib/tls/i686/cmov/libnss_dns.so.2
Reading symbols from /lib/tls/i686/cmov/libresolv.so.2...done.
Loaded symbols for /lib/tls/i686/cmov/libresolv.so.2
Reading symbols from /usr/lib/apache/1.3/mod_log_config.so...done.
Loaded symbols for /usr/lib/apache/1.3/mod_log_config.so
Reading symbols from /usr/lib/apache/1.3/mod_mime_magic.so...done.
Loaded symbols for /usr/lib/apache/1.3/mod_mime_magic.so
Reading symbols from /usr/lib/apache/1.3/mod_mime.so...done.
Loaded symbols for /usr/lib/apache/1.3/mod_mime.so
Reading symbols from /usr/lib/apache/1.3/mod_dir.so...done.
Loaded symbols for /usr/lib/apache/1.3/mod_dir.so
Reading symbols from /usr/lib/apache/1.3/mod_alias.so...done.
Loaded symbols for /usr/lib/apache/1.3/mod_alias.so
Reading symbols from /usr/lib/apache/1.3/mod_rewrite.so...done.
Loaded symbols for /usr/lib/apache/1.3/mod_rewrite.so
Reading symbols from /usr/lib/apache/1.3/mod_access.so...done.
Loaded symbols for /usr/lib/apache/1.3/mod_access.so
Reading symbols from /usr/lib/apache/1.3/mod_setenvif.so...done.
Loaded symbols for /usr/lib/apache/1.3/mod_setenvif.so
Reading symbols from /lib/tls/i686/cmov/libnss_compat.so.2...done.
Loaded symbols for /lib/tls/i686/cmov/libnss_compat.so.2
Reading symbols from /lib/tls/i686/cmov/libnss_nis.so.2...done.
Loaded symbols for /lib/tls/i686/cmov/libnss_nis.so.2
Core was generated by `/usr/sbin/apache-perl'.
Program terminated with signal 11, Segmentation fault.
#0  0xb775a89b in mysql_ping () from /usr/lib/libmysqlclient.so.15

So it fails during the call to mysql_ping() but I can't see why this is
happening.

Any ideas?

Thanks!

--Tobias

Reply via email to