[PySide] random crashes in pyside during signals

Luc-Eric Rousseau lucericml at gmail.com
Fri Apr 26 19:13:36 CEST 2013


On Wed, Apr 24, 2013 at 7:34 PM, John Ehresman <jpe at wingware.com> wrote:
> Do you have a test case?  Do you have a subclass of QCheckBox?  The
> immediate cause is that mo in SignalManager::retriveMetaObject ends up
> being NULL, but the bug probably occurred earlier.
>
> Thanks,

I've been trying to isolate in a smaller test case and I haven't been
able to yet.
There was mention of a checkbox in that callstack, however in other
times it's elsewhere (for example as below). I do not have a subclass
of QCheckBox, it might have been  the checkbox part of QT's
QListWidget if there was one.  The way I'm reproducing the crash 100%
of the time is to click a push button a few times fast that changes
the selection in a QListBox, which then causes another pane to refresh
with new controls. However, if you don't do that, every once in a
while you can click another control elsewhere and *poof*, you'll crash
with the same call stack. It's just harder to reproduce an other way.
So I've come to the conclusion that there isn't anything wrong
specially with that QListWidget UI, it's just much easier to reproduce
it there.

Btw, I've got a few QScrollArea containing controls.  Is are there
known problems with those, control deletion and pyside - I think I've
seen a discussion about this.


#0  PySide::DynamicQMetaObject::update (this=0x0) at
/Users/dev/git/pyside/libpyside/dynamicqmetaobject.cpp:431
#1  0x0000000140169f66 in PySide::SignalManager::retriveMetaObject
(self=0x15492fb90) at
/Users/dev/git/pyside/libpyside/signalmanager.cpp:561
#2  0x000000014d73e919 in QWidgetWrapper::metaObject
(this=0x13e5e1070) at
/Users/dev/git/pyside/build/PySide/QtGui/PySide/QtGui/qwidget_wrapper.cpp:1332
#3  0x000000014d73f63a in Sbk_QWidget_Init (self=0x1516f8bd8,
args=0x11ffbf050, kwds=0x0) at
/Users/dev/git/pyside/build/PySide/QtGui/PySide/QtGui/qwidget_wrapper.cpp:1460
#4  0x000000010f8fccc5 in type_call ()
[...]
#43 0x000000010f942947 in PyEval_CallObjectWithKeywords ()
#44 0x0000000140169731 in PySide::SignalManager::callPythonMetaMethod
(method=@0x7fff5fbfddc0, args=0x7fff5fbfe048, pyMethod=0x14ebac500,
isShortCuit=false) at
/Users/dev/git/pyside/libpyside/signalmanager.cpp:475
#45 0x0000000140169423 in callMethod (object=0x15428deb0, id=28,
args=0x7fff5fbfe048) at
/Users/dev/git/pyside/libpyside/signalmanager.cpp:581
#46 0x00000001401690f5 in PySide::SignalManager::qt_metacall
(object=0x15428deb0, call=QMetaObject::InvokeMetaMethod, id=28,
args=0x7fff5fbfe048) at
/Users/dev/git/pyside/libpyside/signalmanager.cpp:428
#47 0x000000014d73e994 in QWidgetWrapper::qt_metacall
(this=0x15428deb0, call=QMetaObject::InvokeMetaMethod, id=28,
args=0x7fff5fbfe048) at
/Users/dev/git/pyside/build/PySide/QtGui/PySide/QtGui/qwidget_wrapper.cpp:1338
#48 0x000000010dd12d75 in QMetaObject::activate ()
#49 0x000000010e589d41 in QAbstractButton::clicked ()
#50 0x000000010e2fc58e in QAbstractButtonPrivate::emitClicked ()
#51 0x000000010e2fd2aa in QAbstractButtonPrivate::click ()
#52 0x000000010e2fd46c in QAbstractButton::mouseReleaseEvent ()
#53 0x000000010e3b7262 in QToolButton::mouseReleaseEvent ()
#54 0x000000014d69e3b5 in QToolButtonWrapper::mouseReleaseEvent
(this=0x15428f290, arg__1=0x7fff5fbfec38) at
/Users/dev/git/pyside/build/PySide/QtGui/PySide/QtGui/qtoolbutton_wrapper.cpp:1020
#55 0x000000010dff5c0d in QWidget::event ()
#56 0x000000010e2fc557 in QAbstractButton::event ()
#57 0x000000010e3b6e82 in QToolButton::event ()
#58 0x000000014d69a1ff in QToolButtonWrapper::event (this=0x15428f290,
e=0x7fff5fbfec38) at
/Users/dev/git/pyside/build/PySide/QtGui/PySide/QtGui/qtoolbutton_wrapper.cpp:478
#59 0x000000010dfaad52 in QApplicationPrivate::notify_helper ()
#60 0x000000010dfab698 in QApplication::notify ()
#61 0x0000000102820fcb in QxxxApplication::notify (this=0x11a223760,
receiver=0x15428f290, event=0x7fff5fbfec38) at
QmayaApplication.cpp:153
#62 0x000000010dcfdfc6 in QCoreApplication::notifyInternal ()
#63 0x000000010dfb3308 in QApplicationPrivate::sendMouseEvent ()
#64 0x000000010df62cf4 in qt_mac_handleMouseEvent ()
#65 0x00007fff85b75606 in -[NSWindow sendEvent:] ()
#66 0x000000010df5a7bf in -[QCocoaWindow sendEvent:] ()
#67 0x00007fff85b71674 in -[NSApplication sendEvent:] ()
#68 0x000000010df5e140 in -[QNSApplication sendEvent:] ()
#69 0x00007fff85a8724a in -[NSApplication run] ()
#70 0x000000010df66f3f in QEventDispatcherMac::processEvents ()
#71 0x000000010dcfb428 in QEventLoop::exec ()
#72 0x000000010dcfe6fb in QCoreApplication::exec ()



More information about the PySide mailing list