More details on how to reproduce the issue and the gdb traceback https://gitlab.esrf.fr/workflow/ewoksapps/ewoksfluo/-/work_items/91#note_563654
This is the design problem in silx
class Hdf5TreeModel(qt.QAbstractItemModel):
def _init(self):
...
onDestroy = functools.partial(self._closeFileList, self.__openedFiles)
self.destroyed.connect(onDestroy)
@staticmethod
def _closeFileList(fileList):
"""Static method to close explicit references to internal objects."""
_logger.debug("Clear AbstractDataFileDialog")
for obj in fileList:
_logger.debug("Close file %s", obj.filename)
obj.close()
fileList[:] = []
If self is part of a reference cycle, GC may be tearing it down at the same time Qt emits destroyed. This causes a SEGFAULT.
The top of the traceback is the partial call
Thread 1 "python" received signal SIGSEGV, Segmentation fault.
Downloading source file /tmp/python-build.20250823125345.35687/Python-3.12.11/./Modules/_functoolsmodule.c
0x00007ffff7b884d5 in partial_vectorcall (pto=0x7fffc618c360, args=0x7fffc43f70d8, nargsf=1, kwnames=0x0)
at ./Modules/_functoolsmodule.c:215
warning: 215 ./Modules/_functoolsmodule.c: No such file or directory
(gdb) bt
#0 0x00007ffff7b884d5 in partial_vectorcall (pto=0x7fffc618c360, args=0x7fffc43f70d8, nargsf=1, kwnames=0x0)
at ./Modules/_functoolsmodule.c:215
#1 0x00007fffe1405c25 in PyQtSlot::call(_object*, _object*) const ()
from /home/denolf/.local/wdnbashutils/virtualenvs/pybox_4v53Ca/lib/python3.12/site-packages/PyQt5/QtCore.abi3.so
#2 0x00007fffe1406128 in PyQtSlot::invoke(void**, _object*, void*, bool) const ()
from /home/denolf/.local/wdnbashutils/virtualenvs/pybox_4v53Ca/lib/python3.12/site-packages/PyQt5/QtCore.abi3.so
#3 0x00007fffe14063d0 in PyQtSlotProxy::unislot(void**) ()
from /home/denolf/.local/wdnbashutils/virtualenvs/pybox_4v53Ca/lib/python3.12/site-packages/PyQt5/QtCore.abi3.so
#4 0x00007fffe1406ed7 in PyQtSlotProxy::qt_metacall(QMetaObject::Call, int, void**) ()
from /home/denolf/.local/wdnbashutils/virtualenvs/pybox_4v53Ca/lib/python3.12/site-packages/PyQt5/QtCore.abi3.so
#5 0x00007fffe42d9497 in void doActivate<false>(QObject*, int, void**) ()
from /home/denolf/.local/wdnbashutils/virtualenvs/pybox_4v53Ca/lib/python3.12/site-packages/PyQt5/Qt5/lib/libQt5Core.so.5
#6 0x00007fffe42d291f in QObject::destroyed(QObject*) ()
from /home/denolf/.local/wdnbashutils/virtualenvs/pybox_4v53Ca/lib/python3.12/site-packages/PyQt5/Qt5/lib/libQt5Core.so.5
#7 0x00007fffe42d749e in QObject::~QObject() ()
More details on how to reproduce the issue and the gdb traceback https://gitlab.esrf.fr/workflow/ewoksapps/ewoksfluo/-/work_items/91#note_563654
This is the design problem in silx
If self is part of a reference cycle, GC may be tearing it down at the same time Qt emits destroyed. This causes a SEGFAULT.
The top of the traceback is the partial call