Bug#805847: libnet-mac-vendor-perl: Apache/mod_perl silently does not start if Net::MAC::Vendor 1.25-1 is used (regression from 1.23-1)

Niko Tyni ntyni at debian.org
Wed Dec 9 17:02:54 UTC 2015


On Mon, Nov 23, 2015 at 04:35:07PM -0800, Ivan Kohler wrote:
> On Mon, Nov 23, 2015 at 08:52:34PM +0200, Niko Tyni wrote:
> > FWIW I can't reproduce this
> > [...]
> > So you'll need to provide more information so the Apache problem
> > can be reproduced.
> 
> I was able to reproduce with this configuration:
> 
>   PerlRequire "/home/ivan/apache2/handler.pl"
> 
> and handler.pl is:
> 
>   #!/usr/bin/perl
>   use Net::MAC::Vendor;
>   1;
> 
> I'm not completely sure what's different internally that's triggering 
> the failure.  PerlRequire is preloaded during server startup, but 
> PerlHandler isn't called until the child process is handling the 
> request?

Thanks for the recipe. I looked into this a bit, and replacing 'use
Net::MAC::Vendor' with 'use EV' triggers it too. Apache dies with SIGSEGV,
backtrace below. It goes away if libev-perl is built with EV_NO_ATFORK
defined, so it's the __register_atfork() call in EV.xs:541 or so that
causes it somehow. Presumably the event loop hooking into fork() breaks
when it's mod_perl2 doing the forking.

Seeing the upstream response in [rt.cpan.org #110019], I don't plan to
do any further work on this issue. Sorry. Hope this helps a bit anyway.


Core was generated by `apache2'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f76efa2ef80 in ?? ()
(gdb) bt full
#0  0x00007f76efa2ef80 in ?? ()
No symbol table info available.
#1  0x00007f76f433f90f in __libc_fork () at ../nptl/sysdeps/unix/sysv/linux/x86_64/../fork.c:188
        self = <optimized out>
        now = <optimized out>
        pid = 0
        allp = 0x7ffcdb0b7bd0
        runp = <optimized out>
        ppid = <optimized out>
        parentpid = <optimized out>
        __PRETTY_FUNCTION__ = "__libc_fork"
#2  0x00007f76f4875585 in apr_proc_detach () from /usr/lib/x86_64-linux-gnu/libapr-1.so.0
No symbol table info available.
#3  0x00007f76f15b0c1b in prefork_pre_config (p=0x7f76f512f028, plog=<optimized out>, ptemp=<optimized out>)
    at prefork.c:1376
        no_detach = 0
        debug = <optimized out>
        foreground = <optimized out>
        rv = <optimized out>
        userdata_key = 0x7f76f15b21fc "mpm_prefork_module"
#4  0x0000560f94b449be in ap_run_pre_config (pconf=0x7f76f512f028, plog=0x7f76f50fd028, ptemp=0x7f76f50ff028)
    at config.c:89
        pHook = <optimized out>
        n = 3
        rv = 0
#5  0x0000560f94b22f4b in main (argc=1, argv=0x7ffcdb0b7e28) at main.c:733
        c = 0 '\000'
        showcompile = 0
        showdirectives = 0
        confname = 0x560f94b66cc2 "apache2.conf"
        def_server_root = 0x560f94b66cb5 "/etc/apache2"
        temp_error_log = 0x0
        error = <optimized out>
        process = 0x7f76f5131118
        pconf = 0x7f76f512f028
        plog = 0x7f76f50fd028
        ptemp = 0x7f76f50ff028
        pcommands = 0x7f76f510d028
        opt = 0x7f76f510d118
        rv = <optimized out>
        mod = 0x560f94d89160 <ap_prelinked_modules+64>
        opt_arg = 0x7f76f5131028 "(P\023\365v\177"
        signal_server = <optimized out>

-- 
Niko Tyni   ntyni at debian.org



More information about the pkg-perl-maintainers mailing list