mod_perl, вызывающий ошибку сегментации Apache - почему? - PullRequest
0 голосов
/ 17 февраля 2012

Мой mod_perl, кажется, вызывает ошибку сегментации в моем Apache. «httpd -X» просто выдает «Ошибка сегментации», и мой сервер не запускается.

Я использую Apache 2.2.22, mod_perl 2.0.5, CentOS 5.7 x86_64. Я собрал mod_perl и Apache из исходного кода с помощью следующей команды:

perl5.12.4 Makefile.PL MP_USE_STATIC = 1 MP_AP_PREFIX = / usr / local / src / httpd-2.2.22 MP_AP_CONFIGURE = "- with-mpm = prefork --enable-rewrite"

Что я пробовал до сих пор:

  1. Укажите httpd.conf на мое приложение Catalyst. Результат: Apache умирает с «ошибкой сегментации».
  2. Укажите httpd.conf на простое приложение, созданное с catalyst.pl. Apache умирает с «ошибкой сегментации».
  3. Укажите httpd.conf на статический сайт. Результат: Apache запускается нормально и обслуживает веб-сайт.

Я попробовал следующее:

gdb -c / usr / local / apache2 / bin / httpd

Программа получила сигнал SIGSEGV, ошибка сегментации.

0x00002aaab0db0270 в ?? ()

(gdb) bt

# 0 0x00002aaab0db0270 в ?? ()

# 1 0x00000000004c9d24 в Perl_newUNOP ()

# 2 0x00000000004fb6a6 в Perl_yyparse ()

# 3 0x0000000000557c57 в S_doeval ()

# 4 0x0000000000559546 в Perl_pp_require ()

# 5 0x0000000000528bae в Perl_runops_standard ()

# 6 0x00000000004d5d2f в Perl_eval_sv ()

# 7 0x0000000000478425 в modperl_require_module ()

# 8 0x0000000000472283 в modperl_boot ()

# 9 0x00000000005529cc в Perl_leave_scope ()

# 10 0x00000000004d87eb в S_parse_body ()

# 11 0x00000000004d927c в perl_parse ()

# 12 0x0000000000471d2a в modperl_startup ()

# 13 0x0000000000471cbc в modperl_startup ()

# 14 0x000000000047202e в modperl_init ()

# 15 0x000000000047215f в modperl_hook_init ()

# 16 0x00000000004737bb в modperl_cmd_perldo ()

# 17 0x000000000046432b в invoke_cmd (cmd = 0x5b9880, parms = 0x7fffffffe770, mconfig = 0x844728, args = 0x89b7d8 "использовать lib qw (/usr/local/apache2/virtualhosts/api.nwwi.nl / httpdocs / lib /); \ n ") в config.c: 757

# 18 0x0000000000465865 в ap_walk_config_sub (current = 0x89b828, parms = 0x7fffffffe770, section_vector = 0x830c18) в config.c: 1163

# 19 0x0000000000465914 в ap_walk_config (current = 0x89b828, parms = 0x7fffffffe770, section_vector = 0x830c18) в config.c: 1196

# 20 0x0000000000466cb9 в ap_process_config_tree (s = 0x82de10, conftree = 0x86fcb0, p = 0x822138, ptemp = 0x82a178) в config.c: 1765

# 21 0x0000000000449512 в основном (argc = 2, argv = 0x7fffffffe9e8) в main.c: 723

Я понятия не имею, как читать и интерпретировать это. Может кто-нибудь помочь и указать мне направление для дальнейшего устранения этой проблемы?

1 Ответ

0 голосов
/ 20 февраля 2012

Я получил следующий ответ от Дэйва Ходжкинсона в списке рассылки mod_perl:

# 17 0x000000000046432b в invoke_cmd (cmd = 0x5b9880,

parms=0x7fffffffe770, mconfig=0x844728, args=0x89b7d8 "use lib qw(

/ usr / local / apache2 / virtualhosts / api.nwwi.nl / httpdocs / lib /); \ n ") в

config.c:757

Похоже, это то, что он пытается сделать. Возьми эту директиву и посмотреть, что происходит?

После некоторых экспериментов я изменил часть конфигурации Apache с

PerlSwitches -I/srv/www/example.com/application/lib/

<Perl>
    use lib qw( /srv/www/example.com/application/lib/ );
</Perl>

PerlModule application

до

<Perl>
    use lib qw( /srv/www/example.com/application/lib/ );
</Perl>

и это исправило мою проблему.

...