Автор Тема: Debian, Nginx, PHP-FPM, segfault  (Прочитано 8322 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн OmIkRoNiXz

  • Пользователь
  • **
  • Сообщений: 74
  • Рейтинг: 1
    • Просмотр профиля
Debian, Nginx, PHP-FPM, segfault
« : 25 февраля 2012, 11:36:39 »
система Squeeze обновлённая с Lenny, стоит php 5.3.10 (dotdeb), fpm, nginx, иногда проскакивают segfault -ы именно у php-fpm:

Feb 24 21:45:11 cs kernel: php5-fpm[11664]: segfault at 41 ip 00007fbcbfa744ad sp 00007fffa9930340 error 4 in libresolv-2.11.3.so[7fbcbfa6c000+13000]
Feb 24 21:45:11 cs kernel: php5-fpm[12101]: segfault at 41 ip 00007fbcbfa744ad sp 00007fffa9930340 error 4 in libresolv-2.11.3.so[7fbcbfa6c000+13000]

нашёл способ как вызывать эти сегфолты, простой код типа <?php mysql_connect("some host name", "", ""); вызывает два сегфолта подряд
ltrace log http://pastebin.com/1N7f33Nc

из CLI этот код не выдаёт сегфолта

Оффлайн VanDyke

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 1800
  • Рейтинг: 73
  • Пол: Мужской
  • Network Warrior
    • Просмотр профиля
  • Откуда: Destination network unreachable
Debian, Nginx, PHP-FPM, segfault
« Ответ #1 : 25 февраля 2012, 12:34:50 »
поставь в /etc/security/defaults core unlimited, поймай core, поставь gdb, dbg-пакет для своего php, потом запускаешь gdb -c core.file /path/to/php-fpm даешь ему команду bt и если все символы dbg подцепились - куришь в каком месте чего не понравилось.
Not as ultimate as 42, but pretty close...

Оффлайн OmIkRoNiXz

  • Пользователь
  • **
  • Сообщений: 74
  • Рейтинг: 1
    • Просмотр профиля
Debian, Nginx, PHP-FPM, segfault
« Ответ #2 : 25 февраля 2012, 13:04:25 »
поставил php5-dbg дебаг символы, корки мне никуда не создаются, ну и в логе то он не пишет об этом, пытался использовать gdb attach PID но но что-то не особо помогло, strace может понятнее будет чем ltrace ? http://pastebin.com/XE3KNa0t


Updated: 25 February 2012, 14:14:11

Забыл дописать что воссоздать на другой машине у меня этот segfault не получилось, отличие впринципе только в том что на второй машине с самого начала был установлен Squeeze, а тут апгрейден.
« Последнее редактирование: 25 февраля 2012, 13:14:11 от OmIkRoNiXz »

Оффлайн VanDyke

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 1800
  • Рейтинг: 73
  • Пол: Мужской
  • Network Warrior
    • Просмотр профиля
  • Откуда: Destination network unreachable
Debian, Nginx, PHP-FPM, segfault
« Ответ #3 : 25 февраля 2012, 13:24:49 »
корки мне никуда не создаются
ulimit -c скорее всего показывает 0, что не дает создавать коры.
а тут апгрейден
вероятнее всего - криво =)
Not as ultimate as 42, but pretty close...

Оффлайн OmIkRoNiXz

  • Пользователь
  • **
  • Сообщений: 74
  • Рейтинг: 1
    • Просмотр профиля
Debian, Nginx, PHP-FPM, segfault
« Ответ #4 : 25 февраля 2012, 13:29:55 »
может быть и криво но всё по мануалу, короче нашёл корку отдебажил как ты сказал вот тут интересно:

user:/home/web/stack.ee# gdb -c core /usr/sbin/php-fpm
GNU gdb (GDB) 7.0.1-debian
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/sbin/php-fpm...Reading symbols from /usr/lib/debug/usr/sbin/php5-fpm...done.
(no debugging symbols found)...done.

warning: core file may not match specified executable file.

warning: Can't read pathname for load map: Input/output error.

warning: .dynamic section for "/lib/libnss_dns.so.2" is not at the expected address (wrong library or version mismatch?)
Reading symbols from /lib/libcrypt.so.1...(no debugging symbols found)...done.

........

Reading symbols from /usr/lib/php5/20090626/suhosin.so...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/php5/20090626/suhosin.so
Reading symbols from /lib/libnss_files.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/libnss_files.so.2
Reading symbols from /lib/libnss_compat.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/libnss_compat.so.2
Reading symbols from /lib/libnss_nis.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/libnss_nis.so.2
Reading symbols from /lib/libnss_dns.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/libnss_dns.so.2
Core was generated by `php-fpm: pool debug                                       '.
Program terminated with signal 11, Segmentation fault.
#0  0x00007fe105d694ad in __libc_res_nsearch () from /lib/libresolv.so.2

Оффлайн VanDyke

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 1800
  • Рейтинг: 73
  • Пол: Мужской
  • Network Warrior
    • Просмотр профиля
  • Откуда: Destination network unreachable
Debian, Nginx, PHP-FPM, segfault
« Ответ #5 : 25 февраля 2012, 13:43:50 »
OmIkRoNiXz, поставь еще libc6-dbg и в gdb выполни bt



Updated: 25 February 2012, 14:45:50

а хотя...
warning: .dynamic section for "/lib/libnss_dns.so.2" is not at the expected address (wrong library or version mismatch?)
чет не дообновил.
Not as ultimate as 42, but pretty close...

Оффлайн OmIkRoNiXz

  • Пользователь
  • **
  • Сообщений: 74
  • Рейтинг: 1
    • Просмотр профиля
Debian, Nginx, PHP-FPM, segfault
« Ответ #6 : 25 февраля 2012, 13:47:23 »
#0  *__GI___libc_res_nsearch (statp=0x7fe1062d7300, name=<value optimized out>, class=<value optimized out>, type=<value optimized out>, answer=0x7fffa5794220 "\327)\201\200", anslen=1024,
    answerp=0x7fffa5794a80, answerp2=0x41, nanswerp2=0x590000001, resplen2=0x7fe1062d4e60) at res_query.c:390
390     res_query.c: No such file or directory.
        in res_query.c

#0  *__GI___libc_res_nsearch (statp=0x7fe1062d7300, name=<value optimized out>, class=<value optimized out>, type=<value optimized out>, answer=0x7fffa5794220 "\327)\201\200", anslen=1024,
    answerp=0x7fffa5794a80, answerp2=0x41, nanswerp2=0x590000001, resplen2=0x7fe1062d4e60) at res_query.c:390
#1  0x00007fe100f4b549 in _nss_dns_gethostbyaddr_r (addr=<value optimized out>, len=<value optimized out>, af=<value optimized out>, result=<value optimized out>,
    buffer=<value optimized out>, buflen=<value optimized out>, errnop=0x100808129d7, h_errnop=0x6f6f670600000100) at nss_dns/dns-host.c:532

Оффлайн VanDyke

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 1800
  • Рейтинг: 73
  • Пол: Мужской
  • Network Warrior
    • Просмотр профиля
  • Откуда: Destination network unreachable
Debian, Nginx, PHP-FPM, segfault
« Ответ #7 : 25 февраля 2012, 13:50:53 »
OmIkRoNiXz, libc6 точно нормально обновилась?
Not as ultimate as 42, but pretty close...

Оффлайн OmIkRoNiXz

  • Пользователь
  • **
  • Сообщений: 74
  • Рейтинг: 1
    • Просмотр профиля
Debian, Nginx, PHP-FPM, segfault
« Ответ #8 : 25 февраля 2012, 13:55:26 »
Ну, а как проверить, выполнял "apt-get install --reinstall libc6" ноль эмоций.

Оффлайн VanDyke

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 1800
  • Рейтинг: 73
  • Пол: Мужской
  • Network Warrior
    • Просмотр профиля
  • Откуда: Destination network unreachable
Debian, Nginx, PHP-FPM, segfault
« Ответ #9 : 25 февраля 2012, 14:14:42 »
OmIkRoNiXz
apt-get install debsums
debsums libc6
ну или вообще debsums -a -c
Not as ultimate as 42, but pretty close...

Оффлайн OmIkRoNiXz

  • Пользователь
  • **
  • Сообщений: 74
  • Рейтинг: 1
    • Просмотр профиля
Debian, Nginx, PHP-FPM, segfault
« Ответ #10 : 25 февраля 2012, 14:16:45 »
Да делал это на всякий случай смотрел, даже md5 проверил для lib* некоторых на разных серверах.

debsums: no md5sums for binutils
/etc/console-tools/config
debsums: no md5sums for dhcp3-client
debsums: no md5sums for dhcp3-common
debsums: no md5sums for doc-debian
debsums: no md5sums for g++
debsums: no md5sums for git
debsums: no md5sums for git-core
/etc/init.d/bootmisc.sh
/etc/init.d/bootlogs
/etc/dhcp/dhclient.conf
debsums: no md5sums for libdb4.5
debsums: no md5sums for mawk
/etc/mongodb.conf
/etc/munin/munin.conf
/etc/munin/munin-node.conf
/etc/mysql/my.cnf
debsums: no md5sums for netbase
/etc/nginx/sites-available/default
/etc/nginx/fastcgi_params
/etc/nginx/nginx.conf
/etc/ntp.conf
/etc/php5/fpm/php-fpm.conf
/etc/sysctl.conf
debsums: missing file /etc/cron.monthly/proftpd (from proftpd-basic package)

Оффлайн VanDyke

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 1800
  • Рейтинг: 73
  • Пол: Мужской
  • Network Warrior
    • Просмотр профиля
  • Откуда: Destination network unreachable
Debian, Nginx, PHP-FPM, segfault
« Ответ #11 : 25 февраля 2012, 14:23:58 »
md5 проверил для lib* некоторых на разных серверах.
а если сравнить все библиотеки в /lib/ ?
Например так получить список  find /lib -maxdepth 1 -type f -exec md5sum {} \;  и потом два списка сравнить например diff-ом
Not as ultimate as 42, but pretty close...

Оффлайн OmIkRoNiXz

  • Пользователь
  • **
  • Сообщений: 74
  • Рейтинг: 1
    • Просмотр профиля
Debian, Nginx, PHP-FPM, segfault
« Ответ #12 : 25 февраля 2012, 14:30:05 »

Оффлайн VanDyke

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 1800
  • Рейтинг: 73
  • Пол: Мужской
  • Network Warrior
    • Просмотр профиля
  • Откуда: Destination network unreachable
Debian, Nginx, PHP-FPM, segfault
« Ответ #13 : 25 февраля 2012, 14:45:25 »
 OmIkRoNiXz, а покаж еще ldd /lib/libnss_dns.so.2
Not as ultimate as 42, but pretty close...

Оффлайн OmIkRoNiXz

  • Пользователь
  • **
  • Сообщений: 74
  • Рейтинг: 1
    • Просмотр профиля
Debian, Nginx, PHP-FPM, segfault
« Ответ #14 : 25 февраля 2012, 14:46:34 »
# ldd /lib/libnss_dns.so.2
        linux-vdso.so.1 =>  (0x00007fff837ff000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x00007fd8719f5000)
        libc.so.6 => /lib/libc.so.6 (0x00007fd871693000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fd871e1c000)