Re: XS callback function

[email protected] (Private and Confidential)
Newsgroups perl.xs
Message-ID <[email protected]>
Confirmed, the library I am wrapping runs in a separate thread and runs 
its callbacks from there. "context" is a good keyword and led me to dTHX 
and PERL_SET_CONTEXT. I haven't found a good example of using these yet. 
Adding dTHX did get me past dSP, but I die consistently in ENTER now.

On 2/10/2010 10:48 PM, muppet wrote:
>
> On Feb 10, 2010, at 7:32 PM, Private and Confidential wrote:
>
>> I've written a callback function for an XS module designed to call a perl function when invoked.
>>
>> If I call the function directly, from within the C code, it runs through completely as expected.
>>
>> If its invoked as a callback from the library I am wrapping, it does immediately at "dSP;" i.e. SV **sp = PL_stack_sp;
>>
>> Specifically PL_stack_sp seems to cause SEGV when touched - I can't even see the value, printf dies also.
>>
>> I can't find anything similar discussed anywhere, does anyone have an idea what might be happening?
>
> Are there multiple threads involved?
>
> If you're cold-calling from C code, you probably need to set up the context properly.  This should be mentioned in the perlguts, perlxs, and perlxstut manpages.
>
> If you're coming from another thread, then you have considerably more work to do to get the context set up safely for invoking code in the interpreter.
>
>
>
> --
> If the monkey could type one keystroke every nanosecond, the expected waiting time until the monkey types out Hamlet is so long that the estimated age of the universe is insignificant by comparison ... this is not a practical method for writing plays.
>    -- Gian-Carlo Rota
>
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.