2012-02-17 59 views
0

我的mod_perl似乎在我的Apache中导致分段错误。 'httpd -X'只是给出'Segmentation Fault',我的服务器无法启动。mod_perl导致Apache分段错误 - 为什么?

我使用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 /本地/ SRC/httpd的-2.2.22 MP_AP_CONFIGURE =“ - 与-MPM = prefork的--enable-重写”

我迄今为止尝试:

  1. 点的httpd.conf我催化剂的应用。结果:Apache因“分段错误”而死亡。
  2. 将httpd.conf指向使用catalyst.pl创建的简单应用程序。 Apache死于'分段错误'。
  3. 将httpd.conf指向静态站点。结果:Apache正常启动并为网站提供服务。

我试过如下:

GDB -c在/ usr /本地/ Apache2的/ bin中/ httpd的

计划接收信号SIGSEGV,分割过错。

0x00002aaab0db0270 in ?? ()

(GDB)BT

#0 0x00002aaab0db0270在??()

#1 0x00000000004c9d24在Perl_newUNOP()

#2 0x00000000004fb6a6在Perl_yyparse()

#3 0x0000000000557c57在S_doeval()

#4 0x0000000000559546在Perl_pp_require()

#5 0x0000000000528bae in Perl_runops_standard()

#6 0x00000000004d5d2f in Perl_eval_sv()

#7 0x0000000000478425在modperl_require_module()

#8 0x0000000000472283在modperl_boot()

#9 0x00000000005529cc在Perl_leave_scope())

#10 0x00000000004d87eb在S_parse_body(

#11 0x10000000004d927c in perl_parse()

#12 0x0000000000471d2a in modperl_startup()

在modperl_startup#13 0x0000000000471cbc()

#在modperl_init()14 0x000000000047202e

在modperl_hook_init#15 0x000000000047215f()

在modperl_cmd_perldo#16 0x00000000004737bb()

#17 invoke_cmd(cmd = 0x5b9880,parms = 0x7fffffffe770, mconfig = 0x844728,args = 0x89b7d8)中的0x000000000046432b使用lib qw(/usr/local/apache2/virtualhosts/api.nwwi.nl /的httpdocs/LIB /); \ n“个)在config.c:757

在ap_walk_config_sub#18 0x0000000000465865(电流= 0x89b828,PARMS = 0x7fffffffe770,section_vector = 0x830c18)在config.c:1163

#19 0x0000000000465914在config.c ap_walk_config(电流= 0x89b828,PARMS = 0x7fffffffe770,section_vector = 0x830c18):1196

#20 0x0000000000466cb9在ap_process_config_tree(S = 0x82de10,conftree = 0x86fcb0,p = 0x822138,PTEMP = 0x82a178)在config.c:1765

#21 0x0000000000449512 in main(argc = 2,argv = 0x7fffffffe9e8)at main.c:723

我不知道如何阅读和解释这个。有人可以帮助并指出我进一步排除故障的方向吗?

回答

0

我接收到来自Dave霍奇金森所述的mod_perl邮件列表以下响应:

#17 0x000000000046432b在invoke_cmd(CMD = 0x5b9880,

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

的/ usr /本地/ 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> 

这解决了我的问题。