[C-API] Weird sys.exc_info reference segfault

Jonas H. jonas at lophus.org
Mon Oct 4 17:30:58 EDT 2010


On 10/04/2010 10:46 AM, Jonas H. wrote:
> On 10/03/2010 11:52 PM, Antoine Pitrou wrote:
>> You probably have a problem in your tp_dealloc implementation.
>
> `tp_dealloc` is NULL...

Alright, `tp_dealloc` must not be NULL because it's called by 
`_Py_Dealloc`.  The C-API tutorial is quite confusing here:

> [...] here's a minimal, but __complete__, module that defines a new type:
>
> [...]
> static PyTypeObject noddy_NoddyType = {
>     [...]
>     0,                         /*tp_dealloc*/
>     [...]
> };

So I thought "complete" meant "it works". Actually, DECREFing that an 
object of *that* type does not work, it crashes because of the NULL 
`tp_dealloc` function pointer that is called in `_Py_Dealloc`.

Jonas



More information about the Python-list mailing list