Hi All, in t/apache2/basic.t
I seem to have hit a snag, I'd like to get someone to verify it before I rip my hair out trying to fix it. in the 1.x series, my $handlers = $r->get_handlers('PerlCleanupHandler'); is( scalar @$handlers, 0, 'there is no PerlCleanupHandler before add_cleanup_handler()' ); Apache::SizeLimit->add_cleanup_handler($r); in the 2.x series, ### XXX: mp1 / mp2 API difference # http://perl.apache.org/docs/2.0/api/Apache2/RequestUtil.html#Synopsis # my @handlers = @{ $r->get_handlers('PerlCleanupHandler') || [] }; is( scalar @handlers, 0, 'there is no PerlCleanupHandler before add_cleanup_handler()' ); Apache2::SizeLimit->add_cleanup_handler($r); FIRST, notice the API difference.... SECOND, the second time you call @handlers = @{ $r->get_handlers('PerlCleanupHandler') || [] }; is( scalar @handlers, 1, 'there is one PerlCleanupHandler after add_cleanup_handler()' ); IT SEGFAULTS! Witness the fruits of my labor and gdb 6.5 able to attach to httpd during startup on FreeBSD! There is a PR http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/100067 for this, but they've not committed it yet -- I'll ping them. (gdb) bt #0 0x28426ad1 in strlen () from /lib/libc.so.6 #1 0x287e2fbb in Perl_newSVpv (s=0x0, len=0) at sv.c:6885 av_push(av, newSVpv(handler->name, 0)); #2 0x2871a67e in modperl_handler_perl_get_handlers (handp=0x82c6e6c, p=0x82c6018) at modperl_handler.c:584 #3 0x288fbeb2 in mpxs_Apache2__RequestRec_get_handlers (r=0x82c6050, name=0x8a82880 "PerlCleanupHandler") at /usr/home/pgollucci/dev/compile/freebsd-6.1-stable/3.4.4/mod_perl/r436693-5.8.8-2.2.3-prefork/xs/Apache2/RequestUtil/Apache2__RequestUtil.h:48 #4 0x288fdc08 in XS_Apache2__RequestRec_get_handlers (cv=0x8a7b570) at RequestUtil.xs:146 #5 0x287d3820 in Perl_pp_entersub () at pp_hot.c:2877 #6 0x287b407d in Perl_runops_debug () at dump.c:1459 #7 0x2875f93d in S_call_body (myop=0xbfbfdef0, is_eval=0 '\0') at perl.c:2731 #8 0x2875f4f2 in Perl_call_sv (sv=0x8a168b8, flags=4) at perl.c:2646 #9 0x287186a3 in modperl_callback (handler=0x82a32c0, p=0x82c6018, r=0x82c6050, s=0x80baeb8, args=0x825a450) at modperl_callback.c:100 #10 0x28718d9d in modperl_callback_run_handlers (idx=6, type=4, r=0x82c6050, c=0x0, s=0x80baeb8, pconf=0x0, plog=0x0, ptemp=0x0, run_mode=MP_HOOK_RUN_FIRST) at modperl_callback.c:261 #11 0x28719174 in modperl_callback_per_dir (idx=6, r=0x82c6050, run_mode=MP_HOOK_RUN_FIRST) at modperl_callback.c:368 #12 0x287147a8 in modperl_response_handler_run (r=0x82c6050, finish=1) at mod_perl.c:994 #13 0x28714899 in modperl_response_handler (r=0x82c6050) at mod_perl.c:1034 #14 0x08077276 in ap_run_handler (r=0x82c6050) at config.c:157 #15 0x080779f6 in ap_invoke_handler (r=0x82c6050) at config.c:371 #16 0x08085630 in ap_process_request (r=0x82c6050) at http_request.c:258 #17 0x08082a38 in ap_process_http_connection (c=0x82ba128) at http_core.c:184 #18 0x0807e8d2 in ap_run_process_connection (c=0x82ba128) at connection.c:43 #19 0x0807ed10 in ap_process_connection (c=0x82ba128, csd=0x82ba050) at connection.c:178 #20 0x0808aac2 in child_main (child_num_arg=0) at prefork.c:640 #21 0x0808ac62 in make_child (s=0x80baeb8, slot=0) at prefork.c:736 #22 0x0808acd5 in startup_children (number_to_start=1) at prefork.c:754 #23 0x0808b0fd in ap_mpm_run (_pconf=0x80b9018, plog=0x80e7018, s=0x80baeb8) at prefork.c:975 #24 0x080622be in main (argc=7, argv=0xbfbfe394) at main.c:717 Worst case, $r->pool->cleanup_register(\&exit_if_too_big, $r); doesn't break get_handlers in 2.x -- ------------------------------------------------------------------------ Philip M. Gollucci ([EMAIL PROTECTED]) 323.219.4708 Consultant / http://p6m7g8.net/Resume/resume.shtml Senior Software Engineer - TicketMaster - http://ticketmaster.com 1024D/A79997FA F357 0FDD 2301 6296 690F 6A47 D55A 7172 A799 97F "In all that I've done wrong I know I must have done something right to deserve a hug every morning and butterfly kisses at night." __ ___ ___ ____ __ / |/ /_ __/ __/ __ \/ / / /|_/ / // /\ \/ /_/ / /__ /_/ /_/\_, /___/\___\_\___/ <___/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]