0

私は 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 ビット

4

1 に答える 1