Hi,

This bug exists in the latest (upgraded) version of Jaunty as of now. I
can reliably reproduce 100% of the time by setting in my.cnf:

wait_timeout = 10
interactive_timeout = 10 (Don't think this actually affects DBD::mysql, but in 
case)

Also set the number of apache children in apache2.conf to be a small
number like 3:

StartServers 3
MinSpareServers 3
MaxSpareServers 3
ServerLimit 3
MaxClients 3


Restart mysql server.
Restart Apache with apache2ctl

Do something that causes a database connection to occur. Do it several
times so that all your apache children or threads connect to the mysql
server.

Then wait longer than 10 seconds so the connections can timeout. You can
run netstat -aptn | grep -i mysql to see the connections and you'll see
them timeout.

Then cause a database connect in your web application again while you're
tailing the apache error log and you'll see the apache children segfault
as they try to reconnect.

A core dump analysis using gdb reveals the following:

#0  0x00007fbae033875a in mysql_ping () from /usr/lib/libmysqlclient_r.so.15
#1  0x00007fbad11d9544 in XS_DBD__mysql__db_ping () from 
/usr/lib/perl5/auto/DBD/mysql/mysql.so
#2  0x00007fbad7c619fe in XS_DBI_dispatch () from /usr/lib/perl5/auto/DBI/DBI.so
#3  0x00007fbada9bc6d0 in Perl_pp_entersub () from /usr/lib/libperl.so.5.10
#4  0x00007fbada9ba972 in Perl_runops_standard () from /usr/lib/libperl.so.5.10
#5  0x00007fbada9b82c8 in Perl_call_sv () from /usr/lib/libperl.so.5.10
#6  0x00007fbadac97244 in modperl_callback () from 
/usr/lib/apache2/modules/mod_perl.so
#7  0x00007fbadac97954 in modperl_callback_run_handlers () from 
/usr/lib/apache2/modules/mod_perl.so
#8  0x00007fbadac97f4f in modperl_callback_per_dir () from 
/usr/lib/apache2/modules/mod_perl.so
#9  0x00007fbadac919a0 in ?? () from /usr/lib/apache2/modules/mod_perl.so
#10 0x00007fbadac91b59 in modperl_response_handler_cgi () from 
/usr/lib/apache2/modules/mod_perl.so
#11 0x00007fbae1f17293 in ap_run_handler () from /usr/sbin/apache2
#12 0x00007fbae1f1aa2f in ap_invoke_handler () from /usr/sbin/apache2
#13 0x00007fbae1f2859e in ap_process_request () from /usr/sbin/apache2
#14 0x00007fbae1f253d8 in ?? () from /usr/sbin/apache2
#15 0x00007fbae1f1ec63 in ap_run_process_connection () from /usr/sbin/apache2
#16 0x00007fbae1f2cf06 in ?? () from /usr/sbin/apache2
#17 0x00007fbae1f2d27a in ?? () from /usr/sbin/apache2
#18 0x00007fbae1f2da28 in ap_mpm_run () from /usr/sbin/apache2
#19 0x00007fbae1f0360d in main () from /usr/sbin/apache2

A workaround for this is to install libdbd-mysql-perl (4.011-1) for
Karmic. This is the latest version of libdbd-mysql-perl and I've
verified it fixes this problem. While Karmic is in Alpha status, this
library is not, so I'd consider this safe for production on Jaunty
machines and am running it on my servers. Here's the package url:

http://packages.ubuntu.com/karmic/libdbd-mysql-perl

I'd recommend a fix be made available for Jaunty ASAP because this is a
serious bug, especially for low traffic websites where the time between
hits exceeds the configured mysql wait_timeout time.

Mark.

-- 
libdbd-mysql-perl in intrepid has segfault bug
https://bugs.launchpad.net/bugs/279904
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to