The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Broken pipe при вызове mysql_query"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Broken pipe при вызове mysql_query"  
Сообщение от drone (??) on 07-Фев-06, 13:41 
Собственно, сабж. Система FreeBSD.
В главном потоке создается коннект к БД.
Затем создаются дочерние. Все работает нормально.
Запросы к базе проходят успешно. Но в какой-то момент,
непонятно почему, при вызове mysql_query(&mysql, sql_str)
в дочернем потоке возникает broken pipe и программа вылетает.

Делал даже так:
try{
if (mysql_query(&mysql, sql_str)) exit(3);
}
catch(MYSQL &mysql){
puts("Error mysql_query!");
exit(-1);
}
catch(char *sql_str){
puts("Error sql_str!");
exit(-1);
}

исключение не ловится. Непонятно, прикаких обстоятельствах возникают
проблемы. Причем они возникают, когда в программе всего 1 дочерний
процесс. То есть никакой нагрузки нет. В чем может быть проблема?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Broken pipe при вызове mysql_query"  
Сообщение от Niam on 07-Фев-06, 18:11 
>Собственно, сабж. Система FreeBSD.
>В главном потоке создается коннект к БД.
>Затем создаются дочерние. Все работает нормально.
>Запросы к базе проходят успешно. Но в какой-то момент,
>непонятно почему, при вызове mysql_query(&mysql, sql_str)
>в дочернем потоке возникает broken pipe и программа вылетает.
>
>Делал даже так:
>  try{
>   if (mysql_query(&mysql, sql_str)) exit(3);
>  }
>  catch(MYSQL &mysql){
>   puts("Error mysql_query!");
>   exit(-1);
>  }
>  catch(char *sql_str){
>   puts("Error sql_str!");
>   exit(-1);
>  }
>
>исключение не ловится. Непонятно, прикаких обстоятельствах возникают
>проблемы. Причем они возникают, когда в программе всего 1 дочерний
>процесс. То есть никакой нагрузки нет. В чем может быть проблема?

Исключения и не будут ловится ... мускул написан на с(не с++) и он не бросает исключений и почуме ты ловишь "char *sql_str", если в коде try нигде не делаешь throw "WTF?" ?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Broken pipe при вызове mysql_query"  
Сообщение от Hordi email on 07-Фев-06, 18:52 
>>в дочернем потоке возникает broken pipe и программа вылетает.
SIG_PIPE может кидаться в нескольких случаях. Один из них, если не ошибаюсь, закрытие удаленной стороной сокета во время accept; еще если ты пишешь в сокет, а другая сторона закрыла соединение, т.е. это нормальная ситуация.

Повесь пустой обработчик на сигнал SIG_PIPE и не заморачивайся, все равно функции работы с сокетами тебе стандартную ошибку вернут.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру