You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apreq-dev@httpd.apache.org by Michael Peters <mp...@plusthree.com> on 2005/02/08 00:04:04 UTC

Apache::Request segfault with $self->args and an array

Hello again,

I'm trying to follow the porting guide 
(http://httpd.apache.org/apreq/docs/libapreq2/group__apreq__xs__request.html#porting_from_1_x) 
and I came across this segfault.

I'm trying to do this -

my $req = Apache::Request->new($r);
$req->args->{foo} = [qw(bar foo)];

It seems to work fine if I wasn't using an array. I'm trying to emulate 
the former behaviour of doing

$req->param(foo => [qw(bar foo)] );

Here's the backtrace:

#0  0xf6c0911c in apreq_xs_table_param_set (cv=0x994e020) at 
Apache__Request.h:178
#1  0xf6f144ea in Perl_pp_entersub () from 
/usr/local/apache2/modules/mod_perl.so
#2  0xf6f0e238 in Perl_runops_standard () from 
/usr/local/apache2/modules/mod_perl.so
#3  0xf6ec824e in Perl_call_sv () from 
/usr/local/apache2/modules/mod_perl.so
#4  0xf6f0692a in Perl_magic_setpack () from 
/usr/local/apache2/modules/mod_perl.so
#5  0xf6f049e3 in Perl_mg_set () from /usr/local/apache2/modules/mod_perl.so
#6  0xf6f0e629 in Perl_pp_sassign () from 
/usr/local/apache2/modules/mod_perl.so
#7  0xf6f0e238 in Perl_runops_standard () from 
/usr/local/apache2/modules/mod_perl.so
#8  0xf6ec839a in Perl_call_sv () from 
/usr/local/apache2/modules/mod_perl.so
#9  0xf6eab400 in modperl_callback (handler=0x9901180, p=0x990dae0, 
r=0x990db18, s=0x97e27e0, args=0x9891430) at modperl_callback.c:100
#10 0xf6eabadc in modperl_callback_run_handlers (idx=6, type=4, 
r=0x990db18, c=0x0, s=0x97e27e0, pconf=0x0, plog=0x0, ptemp=0x0,
     run_mode=MP_HOOK_RUN_FIRST) at modperl_callback.c:261
#11 0xf6eabec2 in modperl_callback_per_dir (idx=6, r=0x990db18, 
run_mode=MP_HOOK_RUN_FIRST) at modperl_callback.c:368
#12 0xf6ea76d0 in modperl_response_handler_run (r=0x990db18, finish=1) 
at mod_perl.c:973
#13 0xf6ea77c0 in modperl_response_handler (r=0x990db18) at mod_perl.c:1013
#14 0x0807d55a in ap_run_handler (r=0x990db18) at config.c:151
#15 0x0807d925 in ap_invoke_handler (r=0x990db18) at config.c:363
#16 0x0806cfa9 in ap_process_request (r=0x990db18) at http_request.c:246
#17 0x08068bd1 in ap_process_http_connection (c=0x9907bd8) at 
http_core.c:250
#18 0x0808684a in ap_run_process_connection (c=0x9907bd8) at connection.c:42
#19 0x0807bd35 in child_main (child_num_arg=0) at prefork.c:609
#20 0x0807bf5f in make_child (s=0xf, slot=0) at prefork.c:703
#21 0x0807bff0 in startup_children (number_to_start=1) at prefork.c:721
#22 0x0807c6c3 in ap_mpm_run (_pconf=0xfeeff1b0, plog=0x9816188, 
s=0xfeeff1b4) at prefork.c:940
#23 0x080817d7 in main (argc=7, argv=0xfeeff354) at main.c:617


-- 
Michael Peters
Developer
Plus Three, LP


Re: Apache::Request segfault with $self->args and an array

Posted by Joe Schaefer <jo...@sunstarsys.com>.
Michael Peters <mp...@plusthree.com> writes:


[...]

> I'm trying to do this -
>
> my $req = Apache::Request->new($r);
> $req->args->{foo} = [qw(bar foo)];

Sorry  that won't work with the current codebase.  
You should be able to accomplish something similar 
with

   $req->args->set(foo => "bar");
   $req->args->add(foo => $_) for @extra_foos;

At the moment arrayrefs don't work at all, but
if they did, this is how I think they'd behave.

-- 
Joe Schaefer