On Fri, 18 Mar 2011 10:54:16 -0500, Rex Dieter <[email protected]>
wrote:
> Quoting downstream bug report,
> https://bugzilla.redhat.com/show_bug.cgi?id=676042
> 
> (Using PyQt-4.8.3)...
> 
> When running some simple PyQt4 + QML apps, a segfault can be produced
when 
> the QML tries to make use of an object that is exposed to it by the PyQt

> code. Changing the code very slightly so that the PyQt4 code has an
extra 
> reference to the object removes the segfault.  This likely means that a 
> reference to the object is not being created in the PyQt4 declarative
code.
> 
> the downstream bug also includes some sample code as a test-case.

It's a feature, not a bug...

PyQt correctly gives an extra reference to the Stopwatch context object to
the QDeclarativeContext returned by rootContext() to prevent it being
garbage collected. However the QDeclarativeContext Python object (not the
C++ instance) is itself garbage collected and so the extra reference is
then discarded.

Therefore you need to keep an explicit reference to the Stopwatch instance
(as in your workaround), or the value returned by rootContext(), or give
the Stopwatch instance a sensible parent.

Phil
_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to