[Python-Dev] A little GC confusion (original) (raw)

David Abrahams David Abrahams" <david.abrahams@rcn.com
Fri, 22 Feb 2002 08:07:28 -0500


----- Original Message ----- From: "David Abrahams" <david.abrahams@rcn.com>

----- Original Message ----- From: "Martin v. Loewis" <martin@v.loewis.de>

> Because the type type implements tpisgc (typeobject.c:1378), > declaring static type objects as not being gc. In turn, garbage > collection will not attempt to look at the GC header of these type > objects.

Aha! And the implementation is... static int typeisgc(PyTypeObject *type) { return type->tpflags & PyTPFLAGSHEAPTYPE; } so, wouldn't it make more sense that the Python source always checks PyTPFLAGSHEAPTYPE before tpisgc?

Nice try, but no cigar I'm afraid: copying the tp_is_gc slot from PyType_Type into my metatype before PyType_Ready() doesn't prevent the crash.

Does anyone really understand what happens here?