[PySide] random crashes in pyside during signals

Vitas Povilaitis vitas at GracefulBoot.com
Mon Apr 29 18:26:49 CEST 2013


I've also been running into a problem under Linux that seems similar to
this problem.

It occurs when I update a QTableWidget.  It seems that after I set
QTableWIdgetItems to the table, I occasionally see that a cell becomes a
QWidget when I immediately get it back.  The code later seg faults.

#0  0x00000002 in ?? ()
#1  0xf78cb057 in PySide::getMetaDataFromQObject (cppSelf=0x86f70c0,
self=0xf5bd670c,
    name=0xf7ee7c20)
    at
/fs/geom/PM_working_dirs/chuck/pyside/pyside-qt4.8+1.1.2/libpyside/pyside.cpp:245
#2  0xf79c2b05 in Sbk_QObject_getattro (self=0xf5bd670c, name=0xf7ee7c20)
    at
/fs/geom/PM_working_dirs/chuck/pyside/pyside-qt4.8+1.1.2/build/PySide/QtCore/PySide/QtCore/qobject_wrapper.cpp:3004
#3  0x080e0f11 in PyEval_EvalFrameEx ()
#4  0x080e5be1 in PyEval_EvalCodeEx ()
#5  0x080e4233 in PyEval_EvalFrameEx ()
#6  0x080e5be1 in PyEval_EvalCodeEx ()
#7  0x080e4233 in PyEval_EvalFrameEx ()
#8  0x080e5be1 in PyEval_EvalCodeEx ()
#9  0x0813f46f in PyClassMethod_New ()
#10 0x0806389a in PyObject_Call ()
#11 0x0806d017 in PyClass_IsSubclass ()
#12 0x0806389a in PyObject_Call ()
#13 0x080dded2 in PyEval_CallObjectWithKeywords ()
#14 0x08063930 in PyObject_CallObject ()
#15 0xf78b9491 in PySide::SignalManager::callPythonMetaMethod
(method=@0xffffbd0c,
    args=0xffffbe2c, pyMethod=0xf5bb3cac, isShortCuit=false)
    at
/fs/geom/PM_working_dirs/chuck/pyside/pyside-qt4.8+1.1.2/libpyside/signalmanager.cpp:466
#16 0xf78b98bc in PySide::SignalManager::qt_metacall (object=0x85fb598,
    call=QMetaObject::InvokeMetaMethod, id=37, args=0xffffbe2c)
    at
/fs/geom/PM_working_dirs/chuck/pyside/pyside-qt4.8+1.1.2/libpyside/signalmanager.cpp:572
#17 0xf69f8598 in QDialogWrapper::qt_metacall (this=0x85fb598,
call=QMetaObject::InvokeMetaMethod,
    id=37, args=0xffffbe2c)
    at
/fs/geom/PM_working_dirs/chuck/pyside/pyside-qt4.8+1.1.2/build/PySide/QtGui/PySide/QtGui/qdialog_wrapper.cpp:1325
---Type <return> to continue, or q <return> to quit---
#18 0xf75a90c5 in QMetaObject::metacall ()
   from /proj/dist/orm/0.4d/dist/x86_linux/lib/libQtCore.so.4
#19 0xf75b8d91 in QMetaObject::activate ()
   from /proj/dist/orm/0.4d/dist/x86_linux/lib/libQtCore.so.4
#20 0xf65e7239 in QAbstractButton::clicked ()
   from /proj/dist/orm/0.4d/dist/x86_linux/lib/libQtGui.so.4
#21 0xf62c4ef9 in QAbstractButton::event ()
   from /proj/dist/orm/0.4d/dist/x86_linux/lib/libQtGui.so.4
#22 0xf62c5d54 in QAbstractButton::keyPressEvent ()
   from /proj/dist/orm/0.4d/dist/x86_linux/lib/libQtGui.so.4
#23 0xf62c5ffe in QAbstractButton::mouseReleaseEvent ()
   from /proj/dist/orm/0.4d/dist/x86_linux/lib/libQtGui.so.4
#24 0xf6cf9e22 in QPushButtonWrapper::mouseReleaseEvent (this=0x86046e0,
e=0xffffc73c)
    at
/fs/geom/PM_working_dirs/chuck/pyside/pyside-qt4.8+1.1.2/build/PySide/QtGui/PySide/QtGui/qpushbutton_wrapper.cpp:1029
#25 0xf5f28ae8 in QWidget::event () from
/proj/dist/orm/0.4d/dist/x86_linux/lib/libQtGui.so.4
#26 0xf62c4d9e in QAbstractButton::event ()
   from /proj/dist/orm/0.4d/dist/x86_linux/lib/libQtGui.so.4
#27 0xf63714c5 in QPushButton::event () from
/proj/dist/orm/0.4d/dist/x86_linux/lib/libQtGui.so.4
#28 0xf6cf77da in QPushButtonWrapper::event (this=0x86046e0, e=0xffffc73c)
    at
/fs/geom/PM_working_dirs/chuck/pyside/pyside-qt4.8+1.1.2/build/PySide/QtGui/PySide/QtGui/qpushbutton_wrapper.cpp:487
#29 0xf5ec7fec in QApplicationPrivate::notify_helper ()
   from /proj/dist/orm/0.4d/dist/x86_linux/lib/libQtGui.so.4
#30 0xf5ed0856 in QApplication::notify () from
/proj/dist/orm/0.4d/dist/x86_linux/lib/libQtGui.so.4
#31 0xf69500b4 in QApplicationWrapper::notify (this=0x85651e8,
arg__1=0x86046e0, arg__2=0xffffc73c)
    at
/fs/geom/PM_working_dirs/chuck/pyside/pyside-qt4.8+1.1.2/build/PySide/QtGui/PySide/QtGui/qapplication_wrapper.cpp:348
#32 0xf75a3ccb in QCoreApplication::notifyInternal ()
---Type <return> to continue, or q <return> to quit---
   from /proj/dist/orm/0.4d/dist/x86_linux/lib/libQtCore.so.4
#33 0xf5ecf211 in QApplicationPrivate::sendMouseEvent ()
   from /proj/dist/orm/0.4d/dist/x86_linux/lib/libQtGui.so.4
#34 0xf5f5cc7d in QApplication::x11ProcessEvent ()
   from /proj/dist/orm/0.4d/dist/x86_linux/lib/libQtGui.so.4
#35 0xf5f5b93b in QApplication::x11ProcessEvent ()
   from /proj/dist/orm/0.4d/dist/x86_linux/lib/libQtGui.so.4
#36 0xf5f8756f in QX11Info::copyX11Data ()
   from /proj/dist/orm/0.4d/dist/x86_linux/lib/libQtGui.so.4
#37 0xf75a22ca in QEventLoop::processEvents ()
   from /proj/dist/orm/0.4d/dist/x86_linux/lib/libQtCore.so.4
#38 0xf75a2712 in QEventLoop::exec () from
/proj/dist/orm/0.4d/dist/x86_linux/lib/libQtCore.so.4
#39 0xf75a6789 in QCoreApplication::exec ()
   from /proj/dist/orm/0.4d/dist/x86_linux/lib/libQtCore.so.4
#40 0xf5ec8097 in QApplication::exec () from
/proj/dist/orm/0.4d/dist/x86_linux/lib/libQtGui.so.4
#41 0xf694c7f4 in Sbk_QApplicationFunc_exec_ (self=0x0)
    at
/fs/geom/PM_working_dirs/chuck/pyside/pyside-qt4.8+1.1.2/build/PySide/QtGui/PySide/QtGui/qapplication_wrapper.cpp:1146
#42 0x080e40af in PyEval_EvalFrameEx ()
#43 0x080e535e in PyEval_EvalFrameEx ()
#44 0x080e5be1 in PyEval_EvalCodeEx ()
#45 0x080e5d47 in PyEval_EvalCode ()
#46 0x08104a5e in PyRun_FileExFlags ()
#47 0x08104daa in PyRun_SimpleFileExFlags ()
#48 0x0805ee2d in Py_Main ()
#49 0x0805e042 in main ()

The same code works under Windows with no problems.

I hope this helps track down the bug, but it makes PySide unusable under
Linux.

Sincerely,
Vitas Povilaitis

Vitas Povilaitis (vitas at GracefulBoot.com)
Blog for my film: http://beforedecember.blogspot.com/
Preserve due process of the law: http://tinyurl.com/repeal-ndaa
Click here for my signature file: http://www.gracefulboot.com/signature



On Fri, Apr 26, 2013 at 1:13 PM, Luc-Eric Rousseau <lucericml at gmail.com>wrote:

> 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 ()
> _______________________________________________
> PySide mailing list
> PySide at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/pyside
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20130429/cbb7b9b5/attachment.html>


More information about the PySide mailing list