mysql_ping 导致 SIGSEGV

mysql_ping causes SIGSEGV

我使用 c++ 和 mysql++ 库。我在每个线程上都有单独的 mysqlpp::Connection 对象。所有 mysqlpp 选项都是默认的(禁用 ReconnectOption)。每个线程都保持与 MariaDB 服务器的持久连接。在一系列 SQL 查询之前,我进行以下检查:

try
{
    if (!connection.ping()) connection.connect(db_cfg.name.c_str(),
                                               db_cfg.server.c_str(),
                                               db_cfg.user.c_str(),
                                               db_cfg.password.c_str(),
                                               db_cfg.port);
}

此代码很少产生以下 SIGSEGV:

#0  0x00007fe0a625eb46 in ?? () from /usr/lib/x86_64-linux-  gnu/libmysqlclient.so.20
#1  0x00007fe0a6251b26 in mysql_ping () from /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20
#2  0x00007fe0ab6773b1 in mysqlpp::Connection::ping() () from /usr/lib/libmysqlpp.so.3

我试图通过 运行 测试程序在无限循环中调用 ping/connect 来重现此错误。在执行过程中,我手动重启了 MariaDB 服务器。但是我没有成功复制。 您有任何解决方法吗?谢谢。

OS: Ubuntu 64 位

mysqlpp++ 是使用 libmariadbclient 而不是 libmysqldbclient 重建的。它解决了问题。