[pypy-dev] swig + pypy - object reference counting
alex.pyattaev at gmail.com
Wed Sep 28 11:06:02 CEST 2011
I have a quite sophisticated program that can be summarized as follows:
1. Save a pypy object pointer inside C program. Here I call Py_XINCREF so that
it does not get deleted.
2. Do some logic, move this reference around C code.
3. Return a python tuple via typemap, here I am probably supposed to return a
borrowed reference. And in Python2 it works just fine. BUT. In pypy, for some
reason, it causes segfault with following message:
Fatal error in cpyext, CPython compatibility layer, calling PyTuple_SetItem
Either report a bug or consider not using this particular extension
<InvalidPointerException object at 0x14a87a8>
File "module_cpyext_api_1.c", line 28965, in PyTuple_SetItem
File "module_cpyext_pyobject.c", line 1018, in CpyTypedescr_realize
If I call Py_XINCREF before returning the object, the crash does not happen
and the memory does not seem to be leaking (at least not noticeably massive
amounts of it). So it seems that PyPy is somewhat incompatible with Python2 in
If you want I could send the code example that triggers the bug (it IS quite
large app, which might have many more bugs apart from this, but still).
More information about the pypy-dev