Stas Bekman wrote:
before trying to look at your suggestions I want to have a clear understanding of the path this roller coaster takes to the failure. Can you please answer a few of these questions for this trace?
VMem::Free(void * 0x01208d6c) line 208 + 3 bytes
CPerlHost::Free(void * 0x01208d6c) line 59 + 34 bytes
PerlMemFree(IPerlMem * 0x01236e7c, void * 0x01208d6c) line 302
Perl_safesysfree(void * 0x01208d6c) line 143 + 26 bytes
Perl_sv_clear(interpreter * 0x002644c4, sv * 0x00924478) line 5196 + 13 bytes
Perl_sv_replace(interpreter * 0x002644c4, sv * 0x00924478, sv * 0x0126ec98) line 5046 + 13 bytes
It fails to free 'sv * 0x00924478', any idea what is it? You should be able to peek inside of it using:
((XPV*) (sv)->sv_any )->xpv_pv // 2pvx\n\ ((XPVIV*) (sv)->sv_any )->xiv_iv // 2ivx
or a global catch-all peek:
Perl_sv_peek(my_perl, (SV*)(sv)) // sv_peek
replace sv with the name of the variable. You can go up the stack with 'up' in order to look inside that variable.
Looks like you've cut-and-pasted that from perlhack, but that seems to relate to DDD+gdb. I'm using MSVC++, and have no idea how to do anything like that :(
Yup, I added it there ;) ddd rocks!
Instead, I've done this: (If anyone (Randy?) knows a better way to do this, I'd love to hear it!)...
I've inserted:
buf = savepv(SvPVX(sv)); Safefree(buf);
into Perl_leave_scope(), just above the offending call to sv_replace(sv,value) on line 695 of Perl 5.8.1's scope.c, and rebuilt Perl and mod_perl.
in the future you can probably just run 'make' and copy the library to where it should go (will save you the time to recompile things) and you don't need to recompile mp. that's what I do when I change just a .c file.
I then find that buf contains "TestHooks::stacked_handlers2::filter" at the point where the subsequent call to sv_replace() crashes.
I guess I'll try to analize first your new trace with the minimal config first, which doesn't involve any of these things, and then come back to this data after resolving it.
BTW, if you post new traces please drop 'e' since we don't care about env tracing. I guess this will do: PerlTrace cdghimos (instead of all). That gives us a much shorter trace.
__________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]