i put my old code back in and got apache to segfault. here's a backtrace,
which confirms the offending code, but it doesn't offer much explanation.
btw, i'm working off a CVS update from last night.
#0 0xb713b11a in Parrot_dlfunc_p_p_sc_sc (cur_opcode=0xb52a80d0,
interpreter=0x815fc50) at core.ops:1110
#1 0xb71a9025 in runops_slow_core (interpreter=0x815fc50, pc=0xb52a80d0)
at src/runops_cores.c:147
#2 0xb71a6a52 in runops_int (interpreter=0x815fc50, offset=0)
at src/interpreter.c:809
#3 0xb71a7854 in runops (interpreter=0x815fc50, offset=0)
at src/inter_run.c:69
#4 0xb71a792f in Parrot_runops_fromc (interpreter=0x815fc50,
sub=0x82dd8f8)
at src/inter_run.c:140
#5 0xb71354ad in Parrot_call (interpreter=0x815fc50, sub=0x82dd8f8,
argcount=0) at src/extend.c:675
#6 0xb70e700c in modparrot_call_sub (interp=0x815fc50,
name=0xb72670e0 "_sub2") at parrot.c:45
#7 0xb70e70b1 in modparrot_handler (r=0x815bc90) at mod_parrot.c:60
#8 0x0807c982 in ap_run_handler (r=0x815bc90) at config.c:152
#9 0x0807ce9a in ap_invoke_handler (r=0x815bc90) at config.c:358
#10 0x0806c727 in ap_process_request (r=0x815bc90) at http_request.c:246
#11 0x08068811 in ap_process_http_connection (c=0x8157ba0) at
http_core.c:250
#12 0x08085aea in ap_run_process_connection (c=0x8157ba0) at
connection.c:42
#13 0x0807b507 in child_main (child_num_arg=0) at prefork.c:609
#14 0x0807b6b2 in make_child (s=0x80b67d8, slot=0) at prefork.c:649
#15 0x0807b70b in startup_children (number_to_start=5) at prefork.c:721
#16 0x0807be0d in ap_mpm_run (_pconf=0x80b40a8, plog=0x80ec188,
s=0x80b67d8)
at prefork.c:940
#17 0x08080da2 in main (argc=4, argv=0xbfffae94) at main.c:617
i also dumped some of the library PMC, just in case you can see something.
(gdb) p interpreter->pmc_reg.registers[cur_opcode[2]]->pmc_ext
$3 = (struct PMC_EXT *) 0x0
(gdb) p interpreter->pmc_reg.registers[cur_opcode[2]]->obj
$4 = {u = {_b = {_bufstart = 0x82dd8b0, _buflen = 0}, _ptrs = {
_struct_val = 0x82dd8b0, _pmc_val = 0x0}, _i = {_int_val = 137222320,
_int_val2 = 0}, _num_val = 6.7796834154634202e-316,
_string_val = 0x82dd8b0}, flags = 512, _pobj_version = 0}
-jeff
On Thu, 9 Sep 2004, Dan Sugalski wrote:
> At 11:02 AM -0400 9/9/04, Jeff Horwitz wrote:
> >okay, i'm bringing back a thread from a year ago. for mod_parrot, i'd
> >like to be able to loadlib the running process image (httpd) and dlfunc
> >the various apache API functions. however, while this works for libc
> >functions, and any other functions from shared libraries, it appears not
> >to work for those statically linked into the binary. in fact,
> >
> >loadlib self_lib, nullstring
> >dlfunc func, self_lib, "ap_rputs", "ptv"
> >
> >will reliably segfault on my box (RHEL 3.0)
>
> I think the problem here is that you need to pass a NULL into dlopen
> for the filename to get the main image, not a null string. (Though
> that segfault's pretty unpleasant -- could you enable coredumps and
> see what the backtrace looks like?) Try doing:
>
> null $S0
> loadlib self_lib, $S0
>
> and see if it works better.
>
> If this doesn't work then we'll track things down more to see why.
> --
> Dan
>
> --------------------------------------it's like this-------------------
> Dan Sugalski even samurai
> [EMAIL PROTECTED] have teddy bears and even
> teddy bears get drunk
>