Доброго дня всем.
Есть httpd сервер (обычный Apache), к нему написан модуль, который выпадает в SigSegV. Мне необходимо узнать где это происходит, и вот какое решение я пытался воплотить:
Я переопределяю обработчик сигнала SigSegV, и в свой функции я делаю vfork(), и далее в новом процессе вызываю gdb, который делает attach к родителю, и делает gcore.
Далее, я этот core файл начинаю использовать:
$ gdb httpd -c 5861.1Hc3Ks-0001WX-gC.5861
....
Loaded symbols for /home/prapor/programs/mca/libs/xalan/lib/libxalanMsg.so.110
#0 0x00002af2e04ffa40 in wait () from /lib/libpthread.so.0
(gdb) bt
#0 0x00002af2e04ffa40 in wait () from /lib/libpthread.so.0
#1 0x00002af2e5edc197 in Signal_SIGSEGV (sig=<value optimized out>) at mod_pm.cpp:51
#2 0x00002af2e073f940 in killpg () from /lib/libc.so.6
#3 0x0000000000000000 in ?? ()
(gdb)
И я не вижу тот стек, который я ожидал увидеть. Ведь, как я понимаю, родитель работал, стек у него должен быть не маленький, а тут ноль.
Я уже проделывал таку штуку на работающем апаче - видел нормальный стек исполнения. Но здесь что-то не то. Ведь смотрите: если обработчик сигнала просто завершит свое выполнение (return;), то процесс будет продолжать выполнять свой код. Так а как же он вернется в этот код, если стек пуст!
Вот снимок стека работающего апача:
(gdb) bt
#0 0x00002af2e07c8363 in select () from /lib/libc.so.6
#1 0x00002af2e00a8115 in apr_sleep (t=<value optimized out>) at time.c:246
#2 0x000000000043b4a5 in ap_wait_or_timeout (status=0x7fffcb10b2bc, exitcode=0x7fffcb10b2b8, ret=0x7fffcb10b290,
p=0x565138) at mpm_common.c:345
#3 0x00000000004448e7 in ap_mpm_run (_pconf=0x16f8, plog=<value optimized out>, s=0x2) at worker.c:1570
#4 0x0000000000420b01 in main (argc=1, argv=0x7fffcb10b488) at main.c:717
(gdb)
Но не то что я видел !
Заранее спасибо за советы.


Ответ на:
комментарий
от Chumka

Ответ на:
комментарий
от Legioner

Ответ на:
комментарий
от nial

Ответ на:
комментарий
от nial

Ответ на:
комментарий
от mv

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

Ответ на:
комментарий
от mv

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

Ответ на:
комментарий
от mv

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

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум нахождение виновника в segmentation fault httpd (2012)
- Форум konqueror-3.5-x64 + flash (2006)
- Форум как научить GDB позиционироваться на обработчике сигнала? (2012)
- Форум coredump httpd (2019)
- Форум stack dump (2006)
- Форум gcore, core dump и gdb (2011)
- Форум Исследование core dump с gdb (2003)
- Форум [C++][SIGSEGV]Помогите с отладкой (2011)
- Форум Как из gdb сделать core dump (2004)
- Форум Core dump (2003)