mod_perl导致Apache Segmentation故障 - 为什么?

时间:2012-02-17 13:07:28

标签: apache mod-perl

我的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死于'Segmentation fault'。
  3. 将httpd.conf指向静态站点。结果:Apache正常运行并为网站服务。
  4. 我尝试了以下内容:

      

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

         

    编程接收信号SIGSEGV,分段故障。

         

    0x00002aaab0db0270在? ()

         

    (gdb)bt

         

    #0 0x00002aaab0db0270在? ()

         Perl_newUNOP()

    中的

    #1 0x00000000004c9d24      Perl_yyparse()

    中的

    #2 0x00000000004fb6a6      S_doeval()

    中的

    #3 0x0000000000557c57      Perl_pp_require()

    中的

    #4 0x0000000000559546      Perl_runops_standard()

    中的

    #5 0x0000000000528bae      Perl_eval_sv()

    中的

    #6 0x00000000004d5d2f      modperl_require_module()

    中的

    #7 0x0000000000478425      modperl_boot()

    中的

    #8 0x0000000000472283      Perl_leave_scope()

    中的

    #9 0x00000000005529cc      

    #10 0x00000000004d87eb在S_parse_body()

    中      perl_parse()

    中的

    #11 0x00000000004d927c      modperl_startup()

    中的

    #12 0x0000000000471d2a      modperl_startup()

    中的

    #13 0x0000000000471cbc      modperl_init()

    中的

    #14 0x000000000047202e      modperl_hook_init()

    中的

    #15 0x000000000047215f      modperl_cmd_perldo()

    #16 0x00000000004737bb

         

    #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 in ap_walk_config_sub(current = 0x89b828,parms = 0x7fffffffe770,section_vector = 0x830c18)at config.c:1163

         

    #19 0x0000000000465914 in ap_walk_config(current = 0x89b828,parms = 0x7fffffffe770,section_vector = 0x830c18)at config.c: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

    我不知道如何阅读和解释这个。有人可以帮忙并指出我的方向来进一步解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我在mod_perl邮件列表上收到了Dave Hodgkinson的以下回复:

  

#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>

这解决了我的问题。