加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在mod_perl下的MySQL驱动程序segfaulting – 在哪里寻找问题

发布时间:2020-12-16 06:28:28 所属栏目:大数据 来源:网络整理
导读:我有一个webapp,当数据库重新启动并尝试使用旧连接时会发生段错误.在gdb –args apache -X下运行它会导致以下输出: Program received signal SIGSEGV,Segmentation fault.[Switching to Thread -1212868928 (LWP 16098)]0xb7471c20 in mysql_send_query ()
我有一个webapp,当数据库重新启动并尝试使用旧连接时会发生段错误.在gdb –args apache -X下运行它会导致以下输出:

Program received signal SIGSEGV,Segmentation fault.
[Switching to Thread -1212868928 (LWP 16098)]
0xb7471c20 in mysql_send_query () from /usr/lib/libmysqlclient.so.15

我已经检查过驱动程序和数据库都是最新的(DBD::mysql 4.0008,MySQL 5.0.32-Debian_7etch6-log).

令人讨厌的是,我不能用一个简单的脚本重现这个:

use DBI;
use Test::More tests => 2;

my $dbh = DBI->connect( "dbi:mysql:test",'root' );

sub test_db {
    my ($number) = $dbh->selectrow_array("select 1 ");
    return $number;
}

is test_db,1,"connected to db";

warn "restart db now";
getc;

is test_db,"connected to db";

这给出了以下内容:

ok 1 - connected to db
restart db now at dbd-mysql-test.pl line 23.

DBD::mysql::db selectrow_array failed: MySQL server has gone away at dbd-mysql-test.pl line 17.
not ok 2 - connected to db
#   Failed test 'connected to db'
#   at dbd-mysql-test.pl line 26.
#          got: undef
#     expected: '1'

这行为正确,告诉我为什么请求失败.

让我感到困惑的是它是segfaulting,它不应该做.因为它似乎只在整个应用程序运行时发生(使用DBIx::Class),所以很难将其减少到测试用例.

我应该从哪里开始调试这个?有没有人见过这个?

更新:进一步的刺激显示它在mod_perl下是一个红鲱鱼.将它简化为一个简单的测试脚本我现在已发布到DBI mailing list.感谢您的回答.

解决方法

这是旧DBD :: mysql中的已知问题.升级它(4.008不是最新的).

有一个简单的测试脚本附加到https://rt.cpan.org/Public/Bug/Display.html?id=37027这将触发这个错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读