【问题标题】:mod_perl causing Apache Segmentation fault - why?mod_perl 导致 Apache 分段错误 - 为什么?
【发布时间】:2012-03-08 21:13:42
【问题描述】:

我的 mod_perl 似乎导致我的 Apache 出现分段错误。 'httpd -X' 只是给出了 'Segmentation Fault' 并且我的服务器没有启动。

我正在使用 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 in Perl_newUNOP()

#2 0x00000000004fb6a6 in Perl_yyparse()

#3 0x0000000000557c57 in S_doeval()

#4 0x0000000000559546 in Perl_pp_require()

#5 0x0000000000528bae in Perl_runops_standard()

#6 0x00000000004d5d2f in Perl_eval_sv()

#7 0x0000000000478425 in modperl_require_module()

#8 0x0000000000472283 in modperl_boot()

#9 0x00000000005529cc in Perl_leave_scope()

#10 0x00000000004d87eb in S_parse_body()

#11 0x00000000004d927c in perl_parse()

#12 0x0000000000471d2a in modperl_startup()

#13 0x0000000000471cbc in modperl_startup()

#14 0x000000000047202e in modperl_init()

#15 0x000000000047215f in modperl_hook_init()

#16 0x00000000004737bb in modperl_cmd_perldo()

#17 0x000000000046432b in invoke_cmd (cmd=0x5b9880, parms=0x7ffffffffe770, mconfig=0x844728, args=0x89b7d8 "使用库 qw(/usr/local/apache2/virtualhosts/api.nwwi.nl /httpdocs/lib/ );\n") at config.c:757

#18 0x0000000000465865 in ap_walk_config_sub (current=0x89b828, parms=0x7ffffffffe770, section_vector=0x830c18) at config.c:1163

#19 0x0000000000465914 in ap_walk_config (current=0x89b828, parms=0x7ffffffffe770, section_vector=0x830c18) at config.c:1196

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

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

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

【问题讨论】:

    标签: apache mod-perl


    【解决方案1】:

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

    #17 0x000000000046432b in 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>
    

    这解决了我的问题。

    【讨论】:

      猜你喜欢
      • 2011-05-20
      • 2021-07-18
      • 2020-04-15
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 2011-05-23
      • 2017-08-18
      相关资源
      最近更新 更多