which version of PyQt are you using ?

When in older versions (I think something like 2 releases ago),
the garbage collection kicks in in a thread and it deletes
a QObject from another thread, this object was deleted
immediately, while in recent versions those are deleted later
on in the event loop of the thread to which they belong.

You can always turn the GC of to make sure the issue is GC
related

On Fri, 2012-04-27 at 12:53 +0100, Andrew Suffield wrote:
> query = QtSql.QSqlQuery()
>         if not query.prepare('select %s from %s where %s' % 
> (','.join(field_names), table, self.key_expr(table))):
> 
> I get 'RuntimeError: underlying C/C++ object has been deleted' on the
> second line, with low probability. Sometimes it just segfaults instead
> while inside the C++ function QSqlQuery::prepare. Either way, it
> happens about one time in 100,000, and when it segfaults, a different
> thread is in the garbage collector.
> 
> So, we've got one thread deciding that the local python variables of
> another are garbage and freeing them, while the victim thread is still
> in a function call. That implies the local variables are somehow not
> getting registered properly as being referenced.
> 
> I'll keep digging, but some ideas or pointers to relevant code would
> be handy - it's not immediately clear how sip interacts with GC.
> _______________________________________________
> PyQt mailing list    PyQt@riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt


_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to