Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отловить segmentation fault под mod_perl2 ? 
:(
    Опции темы
sir_nuf_nuf
Дата 1.11.2008, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



Дано:
Система: FreeBSD 6.2
Сервер: apache2.0 + prefork + mod_perl2
Основные библиотеки: XML::LibXML Cache::Memcached DBI

Что произошло:
Внезапно начал падать Apache с segmentation fault (падает один из потомков - worker, мастер процесс - живет).  
perl - код я не менял (занимался js частью), способы обращения к серверу тоже не менял. 
Меня настройки mod_perfork, но потом вернул обратно.


Не то что бы я впервый раз с такой фигней сталкиваюсь.. но хочу услышать ваши рецепты:

как отловить такую багу ?  (как правильно отлавливать такую багу ?)

P.S. Все собрано с отладочной инфой, но core файлов апач не оставляет (почему ?)

Код


[root@jade1 ~/site/lib]# httpd -V
Server version: Apache/2.0.63
Server built:   Oct  3 2008 14:04:18
Server's Module Magic Number: 20020903:13
Server loaded:  APR 0.9.17, APR-UTIL 0.9.15
Compiled using: APR 0.9.17, APR-UTIL 0.9.15
Architecture:   32-bit
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D HTTPD_ROOT="/usr/local"
 -D SUEXEC_BIN="/usr/local/bin/suexec"
 -D DEFAULT_PIDLOG="/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="/var/run/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/var/run/accept.lock"
 -D DEFAULT_ERRORLOG="/var/log/httpd-error.log"
 -D AP_TYPES_CONFIG_FILE="etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="etc/apache2/httpd.conf"

[root@jade1 ~/site/lib]# perl -V
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
  Platform:
    osname=freebsd, osvers=6.2-release, archname=i386-freebsd-64int
    uname='freebsd jade1.domain 6.2-release freebsd 6.2-release #0: mon may 14 19:22:05 msd 2007 [email protected]:optusrobjoptusrsrcsysjade i386 '
    config_args='-sde -Dprefix=/usr/local -Darchlib=/usr/local/lib/perl5/5.8.8/mach -Dprivlib=/usr/local/lib/perl5/5.8.8 -Dman3dir=/usr/local/lib/perl5/5.8.8/perl/man/man3 -Dman1dir=/usr/local/man/man1 -Dsitearch=/usr/local/lib/perl5/site_perl/5.8.8/mach -Dsitelib=/usr/local/lib/perl5/site_perl/5.8.8 -Dscriptdir=/usr/local/bin -Dsiteman3dir=/usr/local/lib/perl5/5.8.8/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Ui_malloc -Ui_iconv -Uinstallusrbinperl -Dcc=cc -Duseshrplib -Dccflags=-DAPPLLIB_EXP="/usr/local/lib/perl5/5.8.8/BSDPAN" -Doptimize=-O2 -fno-strict-aliasing -pipe -Ud_dosuid -Ui_gdbm -Dusethreads=n -Dusemymalloc=y -Duse64bitint'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=define use64bitall=undef uselongdouble=undef
    usemymalloc=y, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-DAPPLLIB_EXP="/usr/local/lib/perl5/5.8.8/BSDPAN" -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include',
    optimize='-O2 -fno-strict-aliasing -pipe',
    cppflags='-DAPPLLIB_EXP="/usr/local/lib/perl5/5.8.8/BSDPAN" -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include'
    ccversion='', gccversion='3.4.6 [FreeBSD] 20060305', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -Wl,-E -L/usr/local/lib'
    libpth=/usr/lib /usr/local/lib
    libs=-lm -lcrypt -lutil
    perllibs=-lm -lcrypt -lutil
    libc=, so=so, useshrplib=true, libperl=libperl.so
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='  -Wl,-R/usr/local/lib/perl5/5.8.8/mach/CORE'
    cccdlflags='-DPIC -fPIC', lddlflags='-shared  -L/usr/local/lib'


Characteristics of this binary (from libperl):
  Compile-time options: MYMALLOC PERL_MALLOC_WRAP USE_64_BIT_INT
                        USE_LARGE_FILES USE_PERLIO
  Locally applied patches:
        defined-or
  Built under freebsd
  Compiled at Oct  2 2008 18:53:22
  @INC:
    /usr/local/lib/perl5/5.8.8/BSDPAN
    /usr/local/lib/perl5/site_perl/5.8.8/mach
    /usr/local/lib/perl5/site_perl/5.8.8
    /usr/local/lib/perl5/site_perl
    /usr/local/lib/perl5/5.8.8/mach
    /usr/local/lib/perl5/5.8.8

^C[root@jade1 ~/site/lib]# pkg_info  | grep mod_perl
mod_perl2-2.0.4,3   Embeds a Perl interpreter in the Apache2 server



Это сообщение отредактировал(а) sir_nuf_nuf - 1.11.2008, 10:25


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
gcc
Дата 1.11.2008, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



точно не знаю, я бы с начало пересобрал без оптимизации
optimize='-O2 -fno-strict-aliasing -pipe',

Цитата

но core файлов апач не оставляет (почему ?)


разрешено ли это? другие создаются?

Это сообщение отредактировал(а) gcc - 1.11.2008, 10:58
PM WWW ICQ Skype GTalk Jabber   Вверх
sir_nuf_nuf
Дата 1.11.2008, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



Цитата(gcc @  1.11.2008,  10:40 Найти цитируемый пост)
разрешено ли это? другие создаются?


вроде как да:
(апач запускаю руками)

Код


[root@jade1 ~/site/lib/AdBroker]# ulimit -c
unlimited

[root@jade1 ~/site/lib/AdBroker]# grep coredump /etc/login.conf
        :coredumpsize=unlimited:\
#       :coredumpsize=infinity:\
#       :coredumpsize=8M:\
#       :coredumpsize=infinity:\
#       :coredumpsize@:\
#       :coredumpsize-cur=0:\
#       :coredumpsize-cur=0:\
#       :coredumpsize=0:\


[root@jade1 ~/site/lib/AdBroker]# grep CoreDump /usr/local/etc/apache2/httpd.conf
CoreDumpDirectory "/home/nuf/core"

[root@jade1 ~/site/lib/AdBroker]# ls -la /home/nuf/core/
total 4
drwxrwxrwx  2 root  nuf  512  1 ▒▒▒ 11:21 .
drwxr-xr-x  7 nuf   nuf  512  1 ▒▒▒ 11:20 ..



я что то пропустил ?


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
gcc
Дата 1.11.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



само что-ли начало падать?
меняли что-то до этого?

Это сообщение отредактировал(а) gcc - 1.11.2008, 11:35
PM WWW ICQ Skype GTalk Jabber   Вверх
sir_nuf_nuf
Дата 1.11.2008, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



Цитата(gcc @  1.11.2008,  11:34 Найти цитируемый пост)
само что-ли начало падать?
меняли что-то до этого?

писал что менялось. принципиальных изменений, типа новых библиотек или новых версий библиотек - не было


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
gcc
Дата 1.11.2008, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



http://www.google.com.ua/search?hl=uk&...oogle&meta=

только что посмотрел там много чего есть, может быть вы что-то включили...
PM WWW ICQ Skype GTalk Jabber   Вверх
nitr
Дата 5.11.2008, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Если назад вернуть, то всё ок?

Если нет, то:
Цитата(sir_nuf_nuf @  1.11.2008,  10:24 Найти цитируемый пост)
Apache с segmentation fault

На сервере точно обновлений не было? Вы следите за обновлениями "на сервере"?
Если не следите, и обновление происходит без вашего ведома, то вряд ли ваше "приложение".

P.S.:  Такое обычно получаю пользователи на "десктопах"... и в разных приложениях.


--------------------
PM   Вверх
sir_nuf_nuf
Дата 5.11.2008, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



Цитата(nitr @  5.11.2008,  18:46 Найти цитируемый пост)
Если назад вернуть, то всё ок?

неа, ничего не ок.

Товарищи!
идеи по типу "вернуть назад" и "что менялось" - меня уже не устраивают. Один раз еще прошло бы.. но проблема повторилась

Нужна какая-то методика отлова _причины_ ошибки.


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
ginnie
Дата 5.11.2008, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



sir_nuf_nuf, нашел кое-что для Вас (http://modperlbook.org/html/21-6-3-Dumping-the-core-File.html), может будет полезно.


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
nitr
Дата 8.11.2008, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



sir_nuf_nuf, вы не ответили (на мой взгляд на самый важный вопрос smile )
Цитата(nitr @  5.11.2008,  18:46 Найти цитируемый пост)
На сервере точно обновлений не было? Вы следите за обновлениями "на сервере"?Если не следите, и обновление происходит без вашего ведома, то вряд ли ваше "приложение".


Цитата(sir_nuf_nuf @  5.11.2008,  19:12 Найти цитируемый пост)
Товарищи!идеи по типу "вернуть назад" и "что менялось" - меня уже не устраивают. Один раз еще прошло бы.. но проблема повторилась

Я вас не про это спросил, а про то что, из-за ваших ли изменений это происходит, или как писал выше - обновления по на сервере, что чаще всего и приводит к ошибкам такого рода.


--------------------
PM   Вверх
sir_nuf_nuf
Дата 9.11.2008, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



Цитата

Я вас не про это спросил, а про то что, из-за ваших ли изменений это происходит, или как писал выше - обновления по на сервере, что чаще всего и приводит к ошибкам такого рода.

Сложно отследить. Последний segfault который удалось отловить был связан либами(Memcached), либо с окружением (работали в "кривом" джейле, который был собрал наполовину под 6 ветку, наполовину под 7. Но после перехода на нормальный джейл FreeBSD7 - все прошло.

Цитата

In order to get the core file, the application must:
Have the same effective UID as the real UID (the same goes for GID). This is the case with mod_perl unless you modify these settings in the server configuration file.

А вот это было не очвидно..

Попробуем
       -X     Run httpd in debug mode. Only one worker will be started and the
              server will not detach from the console.

Cпасибо, ginnie!



--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
Хоббит
Дата 20.11.2008, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



И чем все кончилось? У меня та же трудность. FreeBSD 7.0 Apache 2.2.9 PHP 5.2.6. В какой то момент, 8 ноября с 0:10 стали сыпаться Segmentation fault в лог. Пробовал пересобирать из портов и апач и пхп. Пробовал ставить апач 2.0, пробовал менять настройки mpm. Всё одно и тоже.
Что делать?
PM MAIL   Вверх
sir_nuf_nuf
Дата 20.11.2008, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



да ничем не кончилось. segfault исчез так же таинственно как и появился.
Когда появится еще раз - попробую запускать апач с -X

Проблема так же усугубляется тем, что падает не всегда в том месте, где ошибка.
В моем случае (до этого) проблема была в Cache::Memcached . В момент обращения к библиотеки
рушатся внутрение структуры перла, а потом это может проявится в любом месте


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0644 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.