LINUX.ORG.RU

Помогите вылечить глюку __libc_read()


0

0

Я уже писал сюда о своих траблах с сервачком который форкается и обслуживает входящие соединения. Так вот, иногда появляется процесс который висит в вызове ___libc_read() и не риагирует ни на что кроме SIGTERM - по которому выходит. Я не понимаю как оно может так виснуть - у меня нет ни одного вызова типа read , scanf , fgets итд только recv & send . Еще этот демон пишет в лог (fprintf) , и юзает mysql C API (без классов) - ВСЕ ! Где там чтение ? Во всех логах - чисто. HELP me pleeez ! ядро 2.2.19 gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) mysql Ver 11.13 Distrib 3.23.35, for pc-linux-gnu (i686)


Вообще-то recv может быть реализован через __libc_read, но я не уверен:), попробуй просмотреть открытые соединения - авось идет чтение с сокета а данных не прибежало... или попробой использовать неблокирующий сокет + установи буфер = размеру который ты читаеш + используй select.

Также посмотри src:))

Good luck!

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

Нет дело не в recv - точно . Я специально "вешал" процесс в recv . gdb выдал что висим в __libc_recv(). Я чувствую что выход у меня один - нашпиговывать сервак отладочным выводом + обработка _всех_ критичных сигналов . Будем ловить глюк .

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