You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@perl.apache.org by Stas Bekman <st...@stason.org> on 2004/01/21 02:13:48 UTC
Re: mod_perl 1.99_10 on AIX 5
Rafael, did you have a chance to debug this? The context is below if you have
deleted the thread from 2 months ago.
Stas Bekman wrote:
> Rafael Garcia-Suarez wrote:
>
>> Stas Bekman wrote:
>>
>>>> mod_perl 1.99_10 on AIX 5.2 with the IBM vac compiler, using
>>>> perl 5.8.1 without ithreads, is mostly OK.
>
> [...]
>
>> Here's the full test output :
>>
>> $ t/TEST -v modperl/subenv
>> *** setting ulimit to allow core files
>> ulimit -c unlimited; t/TEST -v 'modperl/subenv'
>> consider removing an old /home/garcia/mod_perl-1.99_10/t/core file
>> before running tests
>> /home/garcia/apache2prefork/bin/httpd -d
>> /home/garcia/mod_perl-1.99_10/t -f
>> /home/garcia/mod_perl-1.99_10/t/conf/httpd.conf -DAPACHE2 using
>> Apache/2.0.47 (prefork MPM)
>
> [...]
>
>> modperl/subenv....1..16
>
> [...]
>
>> FAILED tests 14-16
>> Failed 3/16 tests, 81.25% okay
>> Failed Test Stat Wstat Total Fail Failed List of Failed
>> -------------------------------------------------------------------------------
>>
>> modperl/subenv.t 16 3 18.75% 14-16
>> *** server localhost:8529 shutdown
>> !!! error running tests (please examine t/logs/error_log)
>> !!! oh jeez, server dumped core !!! for stacktrace, run: gdb
>> /home/garcia/apache2prefork/bin/httpd -core
>> /home/garcia/mod_perl-1.99_10/t/core
>
>
> So it segfaults when calling
>
> $r->subprocess_env(FOO => 1);
>
> at t/response/TestModperl/subenv.pm:34
>
> which goes into C guts at WrapXS/Apache/RequestRec/RequestRec.c
>
> #line 66 "RequestRec.xs"
> RETVAL = mpxs_Apache__RequestRec_subprocess_env(aTHX_ r, key, val);
>
> #line 117 "RequestRec.c"
> ST(0) = RETVAL;
> sv_2mortal(ST(0));
>
> I'd check whether RETVAL is a valid sv. It gets its value from
> modperl_table_get_set pasted next:
>
> SV *modperl_table_get_set(pTHX_ apr_table_t *table, char *key,
> SV *sv_val, int do_taint)
> {
> SV *retval = &PL_sv_undef;
>
> if (table == NULL) {
> /* do nothing */
> }
> else if (key == NULL) {
> retval = modperl_hash_tie(aTHX_ "APR::Table",
> Nullsv, (void*)table);
> }
> else if (!sv_val) { /* no val was passed */
> char *val;
> if ((val = (char *)apr_table_get(table, key))) {
> retval = newSVpv(val, 0);
> }
> else {
> retval = newSV(0);
> }
> if (do_taint) {
> SvTAINTED_on(retval);
> }
> }
> else if (!SvOK(sv_val)) { /* val was passed in as undef */
> apr_table_unset(table, key);
> }
> else {
> apr_table_set(table, key, SvPV_nolen(sv_val));
> }
>
> return retval;
> }
>
>> Here's the backtrace :
>>
>> (dbx) where
>> sig_coredump(sig = 11), line 367 in "prefork.c"
>> Perl_sv_2mortal() at 0xd40bac0c
>> XS_Apache__RequestRec_subprocess_env() at 0xd41fd9fc
>> Perl_pp_entersub() at 0xd4139a48
>> Perl_runops_standard() at 0xd41356fc
>> S_call_body() at 0xd40c37bc
>> Perl_call_sv() at 0xd40c7614
>> modperl_callback() at 0xd40a01b0
>> modperl_callback_run_handlers() at 0xd409fe80
>> modperl_callback_per_dir() at 0xd409fbcc
>> modperl_response_handler_run() at 0xd409e594
>> modperl_response_handler() at 0xd409f034
>> ap_run_handler(0x208065b8), line 194 in "config.c"
>> ap_invoke_handler(0x208065b8), line 401 in "config.c"
>> ap_process_request(0x208065b8), line 288 in "http_request.c"
>> ap_process_http_connection(0x20802670), line 293 in "http_core.c"
>> ap_run_process_connection(0x20802670), line 85 in "connection.c"
>> ap_process_connection(0x20802670, 0x20802598), line 211 in "connection.c"
>> child_main(child_num_arg = 1), line 694 in "prefork.c"
>> unnamed block $b272, line 788 in "prefork.c"
>> make_child(s = 0x20028b80, slot = 1), line 788 in "prefork.c"
>> perform_idle_server_maintenance(p = 0x20026470), line 923 in "prefork.c"
>> unnamed block $b276, line 1118 in "prefork.c"
>> ap_mpm_run(_pconf = 0x20026470, plog = 0x2005e630, s = 0x20028b80),
>> line 1118 in "prefork.c"
>> main(argc = 6, argv = 0x2ff22ac4), line 660 in "main.c"
>>
>> I'm using httpd 2.0.47.
>>
>> I suspect some portability nastiness with memory handing of
>> environment variables, but that's just an impression. I may have time
>> to dig further in some future.
>
>
> I can't reproduce this problem, so if you can debug it that would be
> great. For the future you probably want to build mod_perl with
> MP_MAINTAINER=1 and MP_DEBUG=1 so that your stacktrace will show the
> arguments and line numbers as well. Also throw in MP_TRACE=1, if you
> ever need to do tracing without invoking debugger. This is of course
> good only for a non-production server.
__________________________________________________________________
Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org http://ticketmaster.com
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org