Thanks again, for now, setCallback() is only being called once...

but it still panics on the second callback, whether to the same callback as the first successful one, or a different one being called for the first time?

That it works the first time and fails the second, still makes me think I am messing up the stack somehow?

As you'll see below, I've had various attempts at ensuring that the stack is cleaned up. I've tried both the Inline_* macros and the XS macros to no avail?

#! perl -slw use strict; use Inline 'NoClean', 'FORCE', 'INFO' ; use Inline Config => WARNINGS => 4; use Inline 'C' => 'DATA', NAME =>'test'; use Devel::Peek; sub recorder{ print "record: @_"; } sub player{ print "player: @_"; } print Dump \&recorder; printf "r:%x p:%x\n", \&recorder, \&player; setCallbacks( \&recorder, \&player ); record( 'test' ); play( 'test' ); __DATA__ __C__ SV *g_rec = (SV*)NULL; SV *g_play = (SV*)NULL; int setCallbacks( SV *rec, SV *play ) { printf( "r:%x p:%x\n", rec, play ); g_rec = SvREFCNT_inc( SvRV( rec ) ); g_play = SvREFCNT_inc( SvRV( play ) ); return 0; } int record( SV *m ) { // ENTER; // SAVETMPS; call_sv( g_rec, G_VOID ); // FREETMPS; // LEAVE; return 0; } int play( SV *m ) { // ENTER; // SAVETMPS; call_sv( g_play, G_VOID ); // FREETMPS; // LEAVE; return 0; } __END__ <-----------------------End of Information Section-------------------- +--------> SV = RV(0x18404b4) at 0x1949a74 REFCNT = 1 FLAGS = (TEMP,ROK) RV = 0x226004 SV = PVCV(0x1824094) at 0x226004 REFCNT = 2 FLAGS = () IV = 0 NV = 0 COMP_STASH = 0x2251d0 "main" START = 0x1958cd4 ===> 11609 ROOT = 0x1958c90 XSUB = 0x0 XSUBANY = 0 GVGV::GV = 0x1959b98 "main" :: "recorder" FILE = "P:\test\test.pl" DEPTH = 0 FLAGS = 0x0 OUTSIDE_SEQ = 951 PADLIST = 0x226010 PADNAME = 0x22601c(0x1826a5c) PAD = 0x22604c(0x182ebb4) OUTSIDE = 0x2253c8 (MAIN) r:226004 p:1959c04 r:1949a74 p:2252a8 record: test panic: memory wrap at P:\test\test.pl line 18.

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

In reply to Re^6: panic: memory wrap by BrowserUk
in thread panic: memory wrap by BrowserUk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.