[PyKDE] Re: Memory leak & segfault with deleteLater

Giovanni Bajo rasky at develer.com
Wed Jun 29 15:46:30 BST 2005

Phil Thompson <phil at riverbankcomputing.co.uk> wrote:

> I think one way around the problem is to avoid the extra reference to the
> Python object and move the data that it contains into a separate data
> structure. In other words, weaken the link between the Python world and
> the C++ world. My concern would then be stopping the new data structure
> leaking - I need to think about it a bit more.

While I am not able to help you with this design issue, I think I have found
also a GC-counterpart of this bug:

#!/usr/bin/env python
from qt import *

class Foo:

app = QApplication([])
w1 = QWidget(None)
w2 = QWidget(w1)
w2.xxxx = w1

f1 = Foo()
f2 = Foo()
f1.w = w1
f2.w = w2
f1.f = f2
f2.f = f1

del w1
del w2
del f1
del f2


import gc

Instead of a segfault, this crashes with an assertion failure in Python
itself (assuming you have assertion enabled): Modules/gcmodule.c:231: failed
assertion `gc->gc.gc_refs != 0'

This is biting me very hard now that you fixed the other GC problem, since
more things are being collected and thus this bug is exposed in many places.
Giovanni Bajo

More information about the PyQt mailing list