On 1/20/2013 3:09 PM, Jens Thoms Toerring wrote:
thank you for the explanations. I had overlooked the cyclic nature of what I had produced here and, of course, the GC can't be blamed for not collecting objects that are part of a cycle. The other question about the last refe- rence to an object vanishing within a method call (which, as I now clearly understand, can't happen and wouldn't make much sense) was triggered by a segmentation fault I get when I do something similar in PySide, so I was getting worried if it might be due to a GC issue. Now I know its got to be something different;-)
Perhaps the hardest part of writing C extensions to CPython directly in C (versus something like Cython) is properly balancing increfs and decrefs. An incref without a later decref can lead to a memory leak. A decref without a preceding incref (so CPython thinks the object can be deleted, when it should not be) can lead to segfaults. So I would report PySide code leading to segfaults to the PySide people.
-- Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list