mysql_ping вызывает 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 вручную. Однако мне не удалось воспроизвести. У вас есть идеи как это исправить? Спасибо.

ОС: Ubuntu 64-битная

1 ответ

Решение

mysqlpp++ был перестроен с использованием libmariadbclient вместо libmysqldbclient. Это решает проблему.

Другие вопросы по тегам