[capi-sig] Threading failure

Stefan Behnel stefan_ml at behnel.de
Mon Jul 19 07:10:33 CEST 2010


Mark Hammond, 19.07.2010 03:15:
> On 6/07/2010 4:36 AM, Paul Grunau wrote:
>> I asked this question here a few days ago, and someone suggested I ask
>> again,
>> providing all the code, so that it can be actually tried. So here it
>> is, and I’m still stumped.
>
> It isn't clear that this is your problem, but all your methods which
> return None fail to increment it's reference count.

Good call. Since returning None is so common, there's even a macro for 
that, called Py_RETURN_NONE.

A suggestion to the OP at this point: using Cython instead of C makes it 
easy to get the ref-counting right, as you don't have to care about it there.

Another very common thing to get wrong: if the callback comes within a 
completely new thread that was not created by Python, you need to set up 
Python's thread state first. PyGILState_Ensure() is not enough in this 
case. See the C-API docs.

Stefan


More information about the capi-sig mailing list