Phil Thompson <[EMAIL PROTECTED]> 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:
pass
app = QApplication([])
w1 = QWidget(None)
w2 = QWidget(w1)
w2.xxxx = w1
w2.deleteLater()
f1 = Foo()
f2 = Foo()
f1.w = w1
f2.w = w2
f1.f = f2
f2.f = f1
del w1
del w2
del f1
del f2
app.processEvents()
import gc
gc.collect()
-----------------------------------------
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
_______________________________________________
PyKDE mailing list [email protected]
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde