As a few of us are aware, OpenLP is currently segfaulting on exit. I
recently found that the tests for the BibleImportForm weren't being run,
and as soon as I enabled them the tests segfaulted too (meaning I
couldn't actually run all the tests). Of course when you run the
BibleImportForm tests by themselves there are no segfaults, how helpful.
Anyway, after some further debugging with GDB, I have narrowed it down
to what looks like a problem with one of the QFormLayouts on the
BibleImportForm. When the Python garbage collector cleans up the form
and it is torn down, I think there's a dependency path that is not being
followed correctly. My guess is that the layout is destroyed before the
components within the layout.
Sadly my copy of GDB does not have Python support, and I don't really
feel like compiling it at the moment, so I can't figure out *which* form
layout is causing the ruckus.
If anyone else wants to take a look at it I've attached the full
backtrace I get from GDB, I hope this information is useful.
--
Raoul Snyman
+1 (520) 490-9743
[email protected]
Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0x0000000000000051 in ?? ()
#0 0x0000000000000051 in ?? ()
#1 0x00007ffff3ba279e in QFormLayout::~QFormLayout() () from
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#2 0x00007ffff4288619 in sipQFormLayout::~sipQFormLayout (this=0x555558d95720,
__in_chrg=<optimized out>) at ./build-3.5/QtWidgets/sipQtWidgetspart7.cpp:10804
#3 0x00007ffff3bcda0b in QWidget::~QWidget() () from
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#4 0x00007ffff41e36f9 in sipQWidget::~sipQWidget (this=0x555558dda1f0,
__in_chrg=<optimized out>) at ./build-3.5/QtWidgets/sipQtWidgetspart9.cpp:35653
#5 0x00007ffff32d1e11 in QObjectPrivate::deleteChildren() () from
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6 0x00007ffff3bcdbdb in QWidget::~QWidget() () from
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#7 0x00007ffff4457139 in sipQWizardPage::~sipQWizardPage (this=0x555558023580,
__in_chrg=<optimized out>) at ./build-3.5/QtWidgets/sipQtWidgetspart0.cpp:13325
#8 0x00007ffff32d1e11 in QObjectPrivate::deleteChildren() () from
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#9 0x00007ffff3bcdbdb in QWidget::~QWidget() () from
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff3cba0e9 in QFrame::~QFrame() () from
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#11 0x00007ffff32d1e11 in QObjectPrivate::deleteChildren() () from
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#12 0x00007ffff3bcdbdb in QWidget::~QWidget() () from
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007ffff3db97be in ?? () from
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#14 0x00007ffff32d1e11 in QObjectPrivate::deleteChildren() () from
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007ffff3bcdbdb in QWidget::~QWidget() () from
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007ffff4458999 in sipQWizard::~sipQWizard (this=0x555558019190,
__in_chrg=<optimized out>) at ./build-3.5/QtWidgets/sipQtWidgetspart0.cpp:15910
#17 0x00007ffff32d1e11 in QObjectPrivate::deleteChildren() () from
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#18 0x00007ffff3bcdbdb in QWidget::~QWidget() () from
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#19 0x00007ffff434c619 in sipQMainWindow::~sipQMainWindow (this=0x5555580170b0,
__in_chrg=<optimized out>) at ./build-3.5/QtWidgets/sipQtWidgetspart4.cpp:37281
#20 0x00007fffec79fdd9 in forgetObject (sw=sw@entry=0x7fffb2d15ca8) at
siplib.c:11399
#21 0x00007fffec7a1199 in sipWrapper_dealloc (self=0x7fffb2d15ca8) at
siplib.c:10962
#22 0x000055555572410c in subtype_dealloc () at ../Objects/typeobject.c:1209
#23 0x0000555555735112 in free_keys_object.lto_priv.1372 (keys=0x555558b21a50)
at ../Objects/dictobject.c:351
#24 dict_dealloc.lto_priv.168 (mp=0x7fffb412d148) at
../Objects/dictobject.c:1632
#25 0x0000555555734229 in insertdict (value=<optimized out>, hash=<optimized
out>, key=<optimized out>, mp=<optimized out>) at ../Objects/dictobject.c:806
#26 PyDict_SetItem () at ../Objects/dictobject.c:1227
#27 0x0000555555735c2d in _PyObjectDict_SetItem () at
../Objects/dictobject.c:3888
#28 0x000055555573dbcd in _PyObject_GenericSetAttrWithDict () at
../Objects/object.c:1159
#29 0x000055555573e231 in PyObject_GenericSetAttr (value=0x7fffb2c3a108,
name=<optimized out>, obj=0x7fffb4ce7240) at ../Objects/object.c:1201
#30 PyObject_SetAttr () at ../Objects/object.c:930
#31 0x00005555556d09ce in PyEval_EvalFrameEx () at ../Python/ceval.c:2304
#32 0x00005555556d493f in fast_function (nk=<optimized out>, na=<optimized
out>, n=<optimized out>, pp_stack=0x7fffffffacd0, func=<optimized out>) at
../Python/ceval.c:4818
#33 call_function (oparg=<optimized out>, pp_stack=0x7fffffffacd0) at
../Python/ceval.c:4745
#34 PyEval_EvalFrameEx () at ../Python/ceval.c:3251
#35 0x00005555556d493f in fast_function (nk=<optimized out>, na=<optimized
out>, n=<optimized out>, pp_stack=0x7fffffffae00, func=<optimized out>) at
../Python/ceval.c:4818
#36 call_function (oparg=<optimized out>, pp_stack=0x7fffffffae00) at
../Python/ceval.c:4745
#37 PyEval_EvalFrameEx () at ../Python/ceval.c:3251
#38 0x00005555556da0df in _PyEval_EvalCodeWithName (qualname=0x0,
name=<optimized out>, closure=0x0, kwdefs=0x0, defcount=1, defs=0x7ffff53a0cd8,
kwcount=0, kws=<optimized out>,
argcount=<optimized out>, args=<optimized out>, locals=<optimized out>,
globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4033
#39 PyEval_EvalCodeEx () at ../Python/ceval.c:4054
#40 0x00005555557167bf in function_call.lto_priv () at
../Objects/funcobject.c:627
#41 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#42 0x00005555556d2180 in ext_do_call (nk=<optimized out>, na=<optimized out>,
flags=<optimized out>, pp_stack=0x7fffffffb0b8, func=0x7ffff532e048) at
../Python/ceval.c:5049
#43 PyEval_EvalFrameEx () at ../Python/ceval.c:3290
#44 0x00005555556da0df in _PyEval_EvalCodeWithName (qualname=0x0,
name=<optimized out>, closure=0x0, kwdefs=0x0, defcount=0, defs=0x0, kwcount=0,
kws=<optimized out>,
argcount=<optimized out>, args=<optimized out>, locals=<optimized out>,
globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4033
#45 PyEval_EvalCodeEx () at ../Python/ceval.c:4054
#46 0x00005555557165d3 in function_call.lto_priv () at
../Objects/funcobject.c:627
#47 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#48 0x000055555567d94e in method_call.lto_priv () at
../Objects/classobject.c:330
#49 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#50 0x000055555571dc46 in slot_tp_call () at ../Objects/typeobject.c:6072
#51 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#52 0x00005555556d4ee1 in do_call (nk=<optimized out>, na=1,
pp_stack=0x7fffffffb450, func=<optimized out>) at ../Python/ceval.c:4951
#53 call_function (oparg=<optimized out>, pp_stack=0x7fffffffb450) at
../Python/ceval.c:4747
#54 PyEval_EvalFrameEx () at ../Python/ceval.c:3251
#55 0x00005555556da0df in _PyEval_EvalCodeWithName (qualname=0x0,
name=<optimized out>, closure=0x0, kwdefs=0x0, defcount=1, defs=0x7ffff54c6488,
kwcount=0, kws=<optimized out>,
argcount=<optimized out>, args=<optimized out>, locals=<optimized out>,
globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4033
#56 PyEval_EvalCodeEx () at ../Python/ceval.c:4054
#57 0x00005555557167bf in function_call.lto_priv () at
../Objects/funcobject.c:627
#58 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#59 0x00005555556d2180 in ext_do_call (nk=<optimized out>, na=<optimized out>,
flags=<optimized out>, pp_stack=0x7fffffffb708, func=0x7ffff524ed08) at
../Python/ceval.c:5049
#60 PyEval_EvalFrameEx () at ../Python/ceval.c:3290
#61 0x00005555556da0df in _PyEval_EvalCodeWithName (qualname=0x0,
name=<optimized out>, closure=0x0, kwdefs=0x0, defcount=0, defs=0x0, kwcount=0,
kws=<optimized out>,
argcount=<optimized out>, args=<optimized out>, locals=<optimized out>,
globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4033
#62 PyEval_EvalCodeEx () at ../Python/ceval.c:4054
#63 0x00005555557165d3 in function_call.lto_priv () at
../Objects/funcobject.c:627
#64 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#65 0x000055555567d94e in method_call.lto_priv () at
../Objects/classobject.c:330
#66 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#67 0x000055555571dc46 in slot_tp_call () at ../Objects/typeobject.c:6072
#68 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#69 0x00005555556d4ee1 in do_call (nk=<optimized out>, na=1,
pp_stack=0x7fffffffbaa0, func=<optimized out>) at ../Python/ceval.c:4951
#70 call_function (oparg=<optimized out>, pp_stack=0x7fffffffbaa0) at
../Python/ceval.c:4747
#71 PyEval_EvalFrameEx () at ../Python/ceval.c:3251
#72 0x00005555556da0df in _PyEval_EvalCodeWithName (qualname=0x0,
name=<optimized out>, closure=0x0, kwdefs=0x0, defcount=1, defs=0x7ffff54c6488,
kwcount=0, kws=<optimized out>,
argcount=<optimized out>, args=<optimized out>, locals=<optimized out>,
globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4033
#73 PyEval_EvalCodeEx () at ../Python/ceval.c:4054
#74 0x00005555557167bf in function_call.lto_priv () at
../Objects/funcobject.c:627
#75 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#76 0x00005555556d2180 in ext_do_call (nk=<optimized out>, na=<optimized out>,
flags=<optimized out>, pp_stack=0x7fffffffbd58, func=0x7ffff524ed08) at
../Python/ceval.c:5049
#77 PyEval_EvalFrameEx () at ../Python/ceval.c:3290
#78 0x00005555556da0df in _PyEval_EvalCodeWithName (qualname=0x0,
name=<optimized out>, closure=0x0, kwdefs=0x0, defcount=0, defs=0x0, kwcount=0,
kws=<optimized out>,
argcount=<optimized out>, args=<optimized out>, locals=<optimized out>,
globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4033
#79 PyEval_EvalCodeEx () at ../Python/ceval.c:4054
#80 0x00005555557165d3 in function_call.lto_priv () at
../Objects/funcobject.c:627
#81 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#82 0x000055555567d94e in method_call.lto_priv () at
../Objects/classobject.c:330
#83 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#84 0x000055555571dc46 in slot_tp_call () at ../Objects/typeobject.c:6072
#85 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#86 0x00005555556d4ee1 in do_call (nk=<optimized out>, na=1,
pp_stack=0x7fffffffc0f0, func=<optimized out>) at ../Python/ceval.c:4951
#87 call_function (oparg=<optimized out>, pp_stack=0x7fffffffc0f0) at
../Python/ceval.c:4747
#88 PyEval_EvalFrameEx () at ../Python/ceval.c:3251
#89 0x00005555556da0df in _PyEval_EvalCodeWithName (qualname=0x0,
name=<optimized out>, closure=0x0, kwdefs=0x0, defcount=1, defs=0x7ffff54c6488,
kwcount=0, kws=<optimized out>,
argcount=<optimized out>, args=<optimized out>, locals=<optimized out>,
globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4033
#90 PyEval_EvalCodeEx () at ../Python/ceval.c:4054
#91 0x00005555557167bf in function_call.lto_priv () at
../Objects/funcobject.c:627
#92 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#93 0x00005555556d2180 in ext_do_call (nk=<optimized out>, na=<optimized out>,
flags=<optimized out>, pp_stack=0x7fffffffc3a8, func=0x7ffff524ed08) at
../Python/ceval.c:5049
#94 PyEval_EvalFrameEx () at ../Python/ceval.c:3290
#95 0x00005555556da0df in _PyEval_EvalCodeWithName (qualname=0x0,
name=<optimized out>, closure=0x0, kwdefs=0x0, defcount=0, defs=0x0, kwcount=0,
kws=<optimized out>,
argcount=<optimized out>, args=<optimized out>, locals=<optimized out>,
globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4033
#96 PyEval_EvalCodeEx () at ../Python/ceval.c:4054
#97 0x00005555557165d3 in function_call.lto_priv () at
../Objects/funcobject.c:627
#98 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#99 0x000055555567d94e in method_call.lto_priv () at
../Objects/classobject.c:330
#100 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#101 0x000055555571dc46 in slot_tp_call () at ../Objects/typeobject.c:6072
#102 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#103 0x00005555556d4ee1 in do_call (nk=<optimized out>, na=1,
pp_stack=0x7fffffffc740, func=<optimized out>) at ../Python/ceval.c:4951
#104 call_function (oparg=<optimized out>, pp_stack=0x7fffffffc740) at
../Python/ceval.c:4747
#105 PyEval_EvalFrameEx () at ../Python/ceval.c:3251
#106 0x00005555556da0df in _PyEval_EvalCodeWithName (qualname=0x0,
name=<optimized out>, closure=0x0, kwdefs=0x0, defcount=1, defs=0x7ffff54c6488,
kwcount=0, kws=<optimized out>,
argcount=<optimized out>, args=<optimized out>, locals=<optimized out>,
globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4033
#107 PyEval_EvalCodeEx () at ../Python/ceval.c:4054
#108 0x00005555557167bf in function_call.lto_priv () at
../Objects/funcobject.c:627
#109 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#110 0x00005555556d2180 in ext_do_call (nk=<optimized out>, na=<optimized out>,
flags=<optimized out>, pp_stack=0x7fffffffc9f8, func=0x7ffff524ed08) at
../Python/ceval.c:5049
#111 PyEval_EvalFrameEx () at ../Python/ceval.c:3290
#112 0x00005555556da0df in _PyEval_EvalCodeWithName (qualname=0x0,
name=<optimized out>, closure=0x0, kwdefs=0x0, defcount=0, defs=0x0, kwcount=0,
kws=<optimized out>,
argcount=<optimized out>, args=<optimized out>, locals=<optimized out>,
globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4033
#113 PyEval_EvalCodeEx () at ../Python/ceval.c:4054
#114 0x00005555557165d3 in function_call.lto_priv () at
../Objects/funcobject.c:627
#115 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#116 0x000055555567d94e in method_call.lto_priv () at
../Objects/classobject.c:330
#117 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#118 0x000055555571dc46 in slot_tp_call () at ../Objects/typeobject.c:6072
#119 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#120 0x00005555556d4ee1 in do_call (nk=<optimized out>, na=1,
pp_stack=0x7fffffffcd90, func=<optimized out>) at ../Python/ceval.c:4951
#121 call_function (oparg=<optimized out>, pp_stack=0x7fffffffcd90) at
../Python/ceval.c:4747
#122 PyEval_EvalFrameEx () at ../Python/ceval.c:3251
#123 0x00005555556d9286 in _PyEval_EvalCodeWithName () at ../Python/ceval.c:4033
#124 0x00005555556d54c9 in fast_function (nk=<optimized out>, na=<optimized
out>, n=<optimized out>, pp_stack=0x7fffffffcfa0, func=<optimized out>) at
../Python/ceval.c:4828
#125 call_function (oparg=<optimized out>, pp_stack=0x7fffffffcfa0) at
../Python/ceval.c:4745
#126 PyEval_EvalFrameEx () at ../Python/ceval.c:3251
#127 0x00005555556d493f in fast_function (nk=<optimized out>, na=<optimized
out>, n=<optimized out>, pp_stack=0x7fffffffd0d0, func=<optimized out>) at
../Python/ceval.c:4818
#128 call_function (oparg=<optimized out>, pp_stack=0x7fffffffd0d0) at
../Python/ceval.c:4745
#129 PyEval_EvalFrameEx () at ../Python/ceval.c:3251
#130 0x00005555556d493f in fast_function (nk=<optimized out>, na=<optimized
out>, n=<optimized out>, pp_stack=0x7fffffffd200, func=<optimized out>) at
../Python/ceval.c:4818
#131 call_function (oparg=<optimized out>, pp_stack=0x7fffffffd200) at
../Python/ceval.c:4745
#132 PyEval_EvalFrameEx () at ../Python/ceval.c:3251
#133 0x00005555556da817 in _PyEval_EvalCodeWithName (qualname=0x0,
name=<optimized out>, closure=0x0, kwdefs=0x7ffff5543c88, defcount=11,
defs=0x7ffff5284170, kwcount=1,
kws=<optimized out>, argcount=<optimized out>, args=<optimized out>,
locals=<optimized out>, globals=<optimized out>, _co=<optimized out>) at
../Python/ceval.c:4033
#134 PyEval_EvalCodeEx () at ../Python/ceval.c:4054
#135 0x00005555557167bf in function_call.lto_priv () at
../Objects/funcobject.c:627
#136 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#137 0x00005555556d2180 in ext_do_call (nk=<optimized out>, na=<optimized out>,
flags=<optimized out>, pp_stack=0x7fffffffd4b8, func=0x7ffff52840d0) at
../Python/ceval.c:5049
#138 PyEval_EvalFrameEx () at ../Python/ceval.c:3290
#139 0x00005555556da817 in _PyEval_EvalCodeWithName (qualname=0x0,
name=<optimized out>, closure=0x7ffff5495b00, kwdefs=0x0, defcount=0, defs=0x0,
kwcount=1, kws=<optimized out>,
argcount=<optimized out>, args=<optimized out>, locals=<optimized out>,
globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4033
#140 PyEval_EvalCodeEx () at ../Python/ceval.c:4054
#141 0x00005555557167bf in function_call.lto_priv () at
../Objects/funcobject.c:627
#142 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#143 0x000055555567d94e in method_call.lto_priv () at
../Objects/classobject.c:330
#144 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#145 0x000055555571daa9 in slot_tp_init () at ../Objects/typeobject.c:6287
#146 0x00005555557255c4 in type_call.lto_priv () at ../Objects/typeobject.c:905
#147 0x000055555575d647 in PyObject_Call () at ../Objects/abstract.c:2166
#148 0x00005555556d2180 in ext_do_call (nk=<optimized out>, na=<optimized out>,
flags=<optimized out>, pp_stack=0x7fffffffd888, func=0x555556062d38) at
../Python/ceval.c:5049
#149 PyEval_EvalFrameEx () at ../Python/ceval.c:3290
#150 0x00005555556d9286 in _PyEval_EvalCodeWithName () at ../Python/ceval.c:4033
#151 0x00005555556d54c9 in fast_function (nk=<optimized out>, na=<optimized
out>, n=<optimized out>, pp_stack=0x7fffffffda90, func=<optimized out>) at
../Python/ceval.c:4828
#152 call_function (oparg=<optimized out>, pp_stack=0x7fffffffda90) at
../Python/ceval.c:4745
#153 PyEval_EvalFrameEx () at ../Python/ceval.c:3251
#154 0x00005555556d9286 in _PyEval_EvalCodeWithName () at ../Python/ceval.c:4033
#155 0x00005555556d9f9f in PyEval_EvalCodeEx () at ../Python/ceval.c:4054
#156 PyEval_EvalCode (co=<optimized out>, globals=<optimized out>,
locals=<optimized out>) at ../Python/ceval.c:777
#157 0x00005555557a78f2 in run_mod () at ../Python/pythonrun.c:976
#158 0x00005555557a9e1d in PyRun_FileExFlags () at ../Python/pythonrun.c:929
#159 0x00005555557aa5be in PyRun_SimpleFileExFlags () at
../Python/pythonrun.c:396
#160 0x00005555557d84d7 in run_file (p_cf=0x7fffffffdd00,
filename=0x555555c0d330 L"/usr/bin/nose2-3", fp=0x555555c789d0) at
../Modules/main.c:318
#161 Py_Main () at ../Modules/main.c:768
#162 0x0000555555668c01 in main () at ../Programs/python.c:65
#163 0x00007ffff6cef2b1 in __libc_start_main () from
/lib/x86_64-linux-gnu/libc.so.6
#164 0x00005555557721ba in _start ()
_______________________________________________
openlp-dev mailing list
[email protected]
https://lists.openlp.io/mailman/listinfo/openlp-dev