[PyQt] sip segfault in disconnectNotify

Erik Janssens Erik.Janssens at conceptive.be
Thu Sep 9 08:40:43 BST 2010


Hello Phil,

I'm experiencing a segmentation fault in sip.

I have build the latest released versions of sip and
pyqt on ubuntu, to be able to have a decent stack trace.

The issue only arises when objects are garbage collected,
so I'm unsure on how to build a simple test case for it ?

When I turn the python garbage collector of (gc.disable()),
the segfault never appears.

If there are things I can test to acquire more information,
or if somebody has ideas on how to build test cases involving
the garbage collector, please let me know.

Please find attached the stacktrace.

Best regards,

Erik
-------------- next part --------------
Program received signal SIGSEGV, Segmentation fault.
0x01f33da1 in sip_api_is_py_method (gil=0xbfff93ac, pymc=0xaf94314 "", sipSelf=0xafd1104, cname=0x0, mname=0x214c5bd "disconnectNotify") at siplib.c:7288
7288	    assert(PyTuple_Check(mro));
(gdb) bt
#0  0x01f33da1 in sip_api_is_py_method (gil=0xbfff93ac, pymc=0xaf94314 "", sipSelf=0xafd1104, cname=0x0, mname=0x214c5bd "disconnectNotify") at siplib.c:7288
#1  0x02102875 in sipQAbstractTableModel::disconnectNotify (this=0xaf942e8, a0=0xae66d78 "2rowsAboutToBeRemoved(QModelIndex,int,int)") at sipQtCoreQAbstractTableModel.cpp:712
#2  0x018ecddc in QObject::disconnect (sender=0xaf942e8, signal=0x158ad7c "2rowsAboutToBeRemoved(QModelIndex,int,int)", receiver=0xb067a20, method=0x15a6f04 "1_q_rowsAboutToBeRemoved(QModelIndex,int,int)") at kernel/qobject.cpp:2786
#3  0x01421a90 in ~QItemSelectionModel (this=0xb067a20, __in_chrg=<value optimized out>) at itemviews/qitemselectionmodel.cpp:964
#4  0x018e518f in QObjectPrivate::deleteChildren (this=0xa6bee40) at kernel/qobject.cpp:1986
#5  0x00e8c3d3 in ~QWidget (this=0xb013cc0, __in_chrg=<value optimized out>) at kernel/qwidget.cpp:1469
#6  0x012812d1 in ~QFrame (this=0xb013cc0, __in_chrg=<value optimized out>) at widgets/qframe.cpp:242
#7  0x0131d114 in ~QAbstractScrollArea (this=0xb013cc0, __in_chrg=<value optimized out>) at widgets/qabstractscrollarea.cpp:524
#8  0x013c2081 in ~QAbstractItemView (this=0xb013cc0, __in_chrg=<value optimized out>) at itemviews/qabstractitemview.cpp:598
#9  0x013d2bd5 in ~QHeaderView (this=0xb013cc0, __in_chrg=<value optimized out>) at itemviews/qheaderview.cpp:339
#10 0x018e518f in QObjectPrivate::deleteChildren (this=0xa6bfeb0) at kernel/qobject.cpp:1986
#11 0x00e8c3d3 in ~QWidget (this=0xb043740, __in_chrg=<value optimized out>) at kernel/qwidget.cpp:1469
#12 0x012812d1 in ~QFrame (this=0xb043740, __in_chrg=<value optimized out>) at widgets/qframe.cpp:242
#13 0x0131d114 in ~QAbstractScrollArea (this=0xb043740, __in_chrg=<value optimized out>) at widgets/qabstractscrollarea.cpp:524
#14 0x013c2081 in ~QAbstractItemView (this=0xb043740, __in_chrg=<value optimized out>) at itemviews/qabstractitemview.cpp:598
#15 0x013f8c81 in ~QTableView (this=0xb043740, __in_chrg=<value optimized out>) at itemviews/qtableview.cpp:1061
#16 0x007bf224 in ~sipQTableView (this=0xb043740, __in_chrg=<value optimized out>) at sipQtGuiQTableView.cpp:405
#17 0x018e518f in QObjectPrivate::deleteChildren (this=0xa6af0a0) at kernel/qobject.cpp:1986
#18 0x00e8c3d3 in ~QWidget (this=0xafa27c0, __in_chrg=<value optimized out>) at kernel/qwidget.cpp:1469
#19 0x00b05936 in ~sipQWidget (this=0xafa27c0, __in_chrg=<value optimized out>) at sipQtGuiQWidget.cpp:339
#20 0x018e518f in QObjectPrivate::deleteChildren (this=0xb09f5f8) at kernel/qobject.cpp:1986
#21 0x00e8c3d3 in ~QWidget (this=0xaf09278, __in_chrg=<value optimized out>) at kernel/qwidget.cpp:1469
#22 0x012812d1 in ~QFrame (this=0xaf09278, __in_chrg=<value optimized out>) at widgets/qframe.cpp:242
#23 0x012eb603 in ~QSplitter (this=0xaf09278, __in_chrg=<value optimized out>) at widgets/qsplitter.cpp:1029
#24 0x0081a518 in ~sipQSplitter (this=0xaf09278, __in_chrg=<value optimized out>) at sipQtGuiQSplitter.cpp:330
#25 0x018e518f in QObjectPrivate::deleteChildren (this=0xbe0c3f0) at kernel/qobject.cpp:1986
#26 0x00e8c3d3 in ~QWidget (this=0xa6b14c8, __in_chrg=<value optimized out>) at kernel/qwidget.cpp:1469
#27 0x00b05936 in ~sipQWidget (this=0xa6b14c8, __in_chrg=<value optimized out>) at sipQtGuiQWidget.cpp:339
#28 0x00b1ac7d in release_QWidget (sipCppV=0xa6b14c8, sipState=6) at sipQtGuiQWidget.cpp:9360
#29 0x00b1ad1b in dealloc_QWidget (sipSelf=0xad70a94) at sipQtGuiQWidget.cpp:9376
#30 0x01f36e56 in forgetObject (sw=0xad70a94) at siplib.c:9746
#31 0x01f36685 in sipWrapper_dealloc (self=0xad70a94) at siplib.c:9301
#32 0x080ab5c3 in subtype_dealloc (self=<SelectView at remote 0xad70a94>) at ../Objects/typeobject.c:1019
#33 0x081625ea in cell_dealloc (op=0xabef83c) at ../Objects/cellobject.c:50
#34 0x080a8a44 in tupledealloc (op=0xb0f53ac) at ../Objects/tupleobject.c:170
#35 0x0816b4f3 in func_dealloc (op=0xb0ea17c) at ../Objects/funcobject.c:461
#36 0x0816247b in cell_clear (op=0xad81df4) at ../Objects/cellobject.c:93
#37 0x0810d1be in delete_garbage (generation=<value optimized out>) at ../Modules/gcmodule.c:714
#38 collect (generation=<value optimized out>) at ../Modules/gcmodule.c:865
#39 0x0810d8eb in collect_generations (basicsize=124) at ../Modules/gcmodule.c:924
#40 _PyObject_GC_Malloc (basicsize=124) at ../Modules/gcmodule.c:1363



More information about the PyQt mailing list