Pretty sure it's a pyqt bug, in deleteSlotProxies:

            if (QThread::currentThread() == up->thread())
                delete up;
            else
                up->deleteLater();

http://qt-project.org/doc/qt-4.8/qobject.html#dtor.QObject

"Warning: Deleting a QObject while pending events are waiting to be
 delivered can cause a crash. [...] Use deleteLater() instead, which
 will cause the event loop to delete the object after all pending
 events have been delivered to it."

Qt makes no effort to clean out pending events when an object is
deleted. deleteSlotProxies has no reason to believe that pending
events are not waiting to be delivered - and in the case I have, there
are pending events. It should use deleteLater unconditionally.

In fact I would suggest that it is probably always wrong for pyqt to
delete a QObject rather than deleteLater, since it has no idea what
the application code may have in the event queue.
_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to