On Wed, Aug 02, 2006 at 02:35:06PM -0400, Mark T. Kennedy wrote:

> however, the callback in the complex program SEGV's within
> 'call_pv'. here is the  source that causes the crash:
> 
> void pass_to_perl (void *p)
> {
>   Inline_Stack_Vars;
>   Inline_Stack_Push (newSVpvf ("this is an arg string"));

you probably don't want to be using newSVpvf here. It's akin to using C's
fprintf() when really you wanted fputs() (with all the same rogue format
string errors.

>   Inline_Stack_Done;
>   call_pv ("main::callback", 0);
>   Inline_Stack_Void;
> }
> 
> if i run the complex program with a perl binary compiled
> with "-g -DDEBUGGING", i get the error message:
> 
>   Event: trapped error in `Handler': panic: memory wrap at ./xx line 162.
> 
> the stack trace from the optimized perl binary when it SEGV's looks
> like this:

> this has me stopped cold. any thoughts/suggestions?  any way
> to get more info?

Given that you have the debugging version, you'll get more information from
that. Run the code under the debugger, with a breakpoint on
Perl_croak_nocontext() [The function is called by the wrap checks. The wrap
check macros are in handy.h]

Then you should be able to get the offending line in the C code, and the
bogus length which is triggering the problems.

Nicholas Clark

Reply via email to