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 nt...@debian.org