LINUX.ORG.RU

pthread & mysql_real_connect() segmentation fault


0

0

Есть программа с использованием потоков pthread.
Компилирую ее и она прекрасно работает.
Другая программа (без использования потоков pthread) отлично работает с
mysql базой данных.
Когда я пытаюсь соединить их в одну программу, то при выполнении функции
mysql_real_connect происходит segmentation fault.

В документации к mysql нашел инфу о том, что все функции в mysql,
кроме mysql_real_connect, по умолчанию поддерживают потоки. Что бы
сделать mysql_real_connect поддерживающую потоки, надо пересобрать
mysql с опцией --enable-thread-safe-client, что бы появилась многопоточная библиотека libmysqlclient_r;
Я так и сделал, а затем свою клиентскую программу откомпилил с опциями
gcc -o test test.c -lpthread -L/usr/lib/mysql -lmysqlclient_r -lz -lnsl.
В самой программе (так сказано в документации к mysql) в самом ее начале
(перед созданием потоков) вписал:

char dbpasswd[12] = "123123";
MYSQL db;
mysql_init(&db);
mysql_thread_init();
mysql_real_connect(&db, "localhost", "dbuser", dbpasswd, "dbname", 0, NULL, 0);
При выполнении mysql_real_connect программа выпадает с segmentation fault.
В параметрах mysql_real_connect ничего не менял, то есть до подключения к
программе -lpthread соединение с mysql сервером и работа с базами данных
проходили отлично с теми же параметрами mysql_real_connect.
Версия mysql - 4.0.20.
Как заставить mysql нормально работать с pthread или что я не так делаю?
Заранее спасибо за любые советы.

anonymous

у мну подключатся через mysql_connect и прекрастно работает

Deleted
()
Ответ на: комментарий от Deleted

У меня mysql_connect вообще не находит при компиляции: implicit declaration of
function 'mysql_connect', хотя mysql/mysql.h подключен и mysql_real_connect
находится. Какие хидеры у mysql_connect?
И потом в параметрах mysql_connect нет параметров базы данных, порта, путь
к unix-сокету. Как после этой функции указывать к какому сокету
коннектиться, с какой базой данных соединяться и т.д.?
Да и в документации говорится, что ее лучше не использовать.

anonymous
()

Была такая же проблема - писали кроссплатформенное приложение юзали gtk - под линуксом катило так - под виндами нет, пменяли pthread на g_threads - тоже падало - оставили виндовую версию без потоков - биться устали - причина не ясная на самом деле.

alphex_kaanoken ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.