![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
M4D |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 4.6.2005 Репутация: нет Всего: нет |
Здравствуйте!
Пишу программу, которая должна работать в многопоточном режиме, и каждый поток имеет собственное соединение с MySQL. Как было сказано в мане, в начале программы делаю my_init(); а в созданном потоке в начале mysql_thread_init(); и mysql_thread_end(); перед pthread_exit(); Но при вызове mysql_real_connect() прога падает - "Segmentation fault (core dumped)" Ось - FreeBSD 6, компилирую так: gcc serv.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lpthread -lmysqlclient_r -o serv Компилится нормально, без ошибок. Но прога падет при попытке коннекта с MySQL ![]() |
|||
|
||||
kirjanov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 22.1.2006 Где: Dark wood of erro r Репутация: 3 Всего: 15 |
желательно привети исходный код....
|
|||
|
||||
M4D |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 4.6.2005 Репутация: нет Всего: нет |
Приведу детали:
падает ![]() |
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
результат всех функций нужно тестировать на предмет ошибок. либо ты тестируешь результаты функций в коде, либо твоя программа вылетает и ты не знаешь почему.
каждая из функций mysql могла упасть. и каждую ф-ю не типа void, нужно проверять на результат. если она возвращает плохой результат, стоит протестировать переменную errno, или какую внутреннюю свою. посмотри пример использования: http://docsrv.caldera.com:8457/cgi-bin/inf...ql_real_connect пока. Это сообщение отредактировал(а) bilbobagginz - 24.4.2006, 01:15 -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
M4D |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 4.6.2005 Репутация: нет Всего: нет |
Я бы протестировал на ошибки, да вот она падает видимо в недрах mysql_real_connect(), т.к. printf("2\n"); не вызывается. Про возвращаемые ошибки я конечно же знаю ;) меня интересовал вопрос - почему же она падает?
![]() |
|||
|
||||
kirjanov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 22.1.2006 Где: Dark wood of erro r Репутация: 3 Всего: 15 |
M4D,
так ты все же посмотри, что возвращает mysql_real_connect().... и тогда
|
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
используй strace.
Это сообщение отредактировал(а) bilbobagginz - 25.4.2006, 18:22 -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
M4D |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 4.6.2005 Репутация: нет Всего: нет |
Вобщем проблема решилась! Очень, очень странно, но:
была у меня в теле проги объявлена структура typedef struct { ... } my_struct; my_struct struc1; Так вот, когда она была, прога и падала) а когда я ее удалил, все стало нормально работать )) мистика какая-то... перенес все данные из структуры в виде глобальных переменных = все пашет ![]() спасибо всем, кто откликнулся! ![]() |
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
может быть проблема в том что если внутри блока потока ты объявляешь переменную,
то она локальна для данного потока. и когда ты пытался обращаться из одного потока на адрес этой переменной другого, то получал совершенно правильный SEGFAULT. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |