Я использую библиотеку 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-битная
mysqlpp ++ был перестроен с использованием libmariadbclient вместо libmysqldbclient. Это решает проблему.
Других решений пока нет …