помогите найти исходники zif_fgets

Dovg

Продвинутый новичок
Добрый день!

У меня завис cli скрипт, который опрашивал memcached, вот back trace
Код:
 (gdb) bt
#0 0x00000000005c7f6d in zif_fgets ()
#1 0x00000000006d8fda in ?? ()
#2 0x00000000006b0740 in execute ()
#3 0x0000000000687ddd in zend_execute_scripts ()
#4 0x0000000000632e48 in php_execute_script ()
#5 0x0000000000718c6a in ?? ()
#6 0x00007f1eed793c8d in __libc_start_main () from /lib/libc.so.6
#7 0x000000000042dae9 in _start ()
(gdb) quit
При этом он потреблял 100% cpu и не делал ни одного внешнего вызова.

Собственно вопрос - где можно посмотреть на исходники zif_fgets?
Гугл меня послал в file.c, но там я по полному совпадению не нашел. Подскажите, куда копать.
 

tony2001

TeaM PHPClub
Чем они тебе помогут?
fgets() вызывает хэндлер из stream-враппера (судя по всему, для сокета, раз там memcached) - php_sockop_read() из main/streams/xp_socket.c, который вызывает recv().
Дальше будешь смотреть исходники recv() из libc?
 

Dovg

Продвинутый новичок
А почему этого в backtrace не видно? Когда я вижу приложение, которое потребляет 100% cpu, то сразу возникают мысли о каком-нибудь вечном цикле.
 

Dovg

Продвинутый новичок
Спасибо.
Попробую воспроизвести в песочнице.
 

tony2001

TeaM PHPClub
CFLAGS="-g3 -O0" ./configure ...
-g3 - максимум дебаг-символов
-O0 - отключает оптимизации
 
Сверху