Hi, I thought before opening a bug I'd ask this question here and see if I'm doing something stupid... The problem occurs very rarely (maybe in one of 100 tries), but it is reproducable in a larger application. Please forgive to not have a stripped down test, maybe someone can already see what is happening from the information given. If not, I'd probably have to reproduce the issue in a smaller test case.
It seems that the signal.disconnect deadlocks sometimes. There are two classes involved: class MyFilter(ClassDerivingFromQObject): # snip def onOpen(self): logger.info("onOpen start") pb = Services.getService("PlaybackControl") pb.sequenceOpened.connect(self.seqOpened) logger.info("onOpen stop") def onClose(self): logger.info("onClose start") pb = Services.getService("PlaybackControl")# pb is a QSharedPointer to a python class deriving from QObject (the project uses shiboken) s = pb.sequenceOpened s.disconnect(self.seqOpened) # this call deadlocks logger.info("onClose stop") def seqOpened(self, *args): logger.info("seqOpened") And the other involved class class GenericReader(AnotherClassDerivingFromQObject): # snip def onClose(self): pb = Services.getService("PlaybackControl")# pb is a QSharedPointer to a python class deriving from QObject (the project uses shiboken) pb.removeConnections(self) # this call deadlocks I managed to get the python tracebacks using the very cool project py-spy: Thread 197717(idle): "Dummy-1" onClose(myfilter.py:23) _stateTransition(nexxT/core/FilterEnvironment.py:310) close(nexxT/core/FilterEnvironment.py:366) performOperation(nexxT/core/Thread.py:197) run(nexxT/core/Thread.py:52) Thread 197716(idle) onClose(nexxT/filters/GenericReader.py:361) _stateTransition(nexxT/core/FilterEnvironment.py:310) close(nexxT/core/FilterEnvironment.py:366) performOperation(nexxT/core/Thread.py:197) run(nexxT/core/Thread.py:52) And the tracebacks from gdb of these threads are here: Thread 10 (Thread 0x7f5aa4a8a6c0 (LWP 197717) "filter"): #0 0x00007f5ac1dcf4f9 in syscall () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007f5aab4cae95 in QBasicMutex::lockInternal() () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #2 0x00007f5aab38f2d5 in ?? () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #3 0x00007f5aab390307 in QMetaObject::disconnectOne(QObject const*, int, QObject const*, int) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #4 0x00007f5aac6af048 in PySide::qobjectDisconnectCallback(QObject*, char const*, _object*) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/libpyside6.abi3.so.6.4 #5 0x00007f5aabbd985b in ?? () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/QtCore.abi3.so #6 0x0000000000547ac6 in ?? () #7 0x00000000005f7f50 in PyObject_CallObject () #8 0x00007f5aac6a489d in ?? () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/libpyside6.abi3.so.6.4 #9 0x00000000005230d0 in ?? () #10 0x000000000053ac2c in PyObject_Vectorcall () #11 0x000000000052b940 in _PyEval_EvalFrameDefault () #12 0x00000000005855a4 in ?? () #13 0x000000000058510e in ?? () #14 0x00007f5aac69d2f1 in PySide::SignalManager::callPythonMetaMethod(QMetaMethod const&, void**, _object*, bool) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/libpyside6.abi3.so.6.4 #15 0x00007f5aac69d5d6 in PySide::SignalManager::SignalManagerPrivate::qtMethodMetacall(QObject*, int, void**) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/libpyside6.abi3.so.6.4 #16 0x00007f5aab38937c in QObject::event(QEvent*) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #17 0x00007f5aab33929a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #18 0x00007f5aab33fdfd in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #19 0x00007f5aab5e11b3 in ?? () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #20 0x00007f5aab91c7a9 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #21 0x00007f5aab91ca38 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #22 0x00007f5aab91cacc in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #23 0x00007f5aab5e0b3a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #24 0x00007f5aab344d5b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #25 0x00007f5aab450eac in QThread::exec() () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #26 0x00007f5aabc729c0 in ?? () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/QtCore.abi3.so #27 0x000000000051f567 in ?? () #28 0x000000000053ac2c in PyObject_Vectorcall () #29 0x000000000052b940 in _PyEval_EvalFrameDefault () #30 0x00000000005855a4 in ?? () #31 0x0000000000585148 in ?? () #32 0x00007f5aabc72915 in ?? () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/QtCore.abi3.so #33 0x00007f5aab4cac7f in ?? () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #34 0x00007f5ac1d56fd4 in ?? () from /lib/x86_64-linux-gnu/libc.so.6 #35 0x00007f5ac1dd75bc in ?? () from /lib/x86_64-linux-gnu/libc.so.6 Thread 9 (Thread 0x7f5a9c2896c0 (LWP 197716) "reader"): #0 0x00007f5ac1d53d36 in ?? () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007f5ac1d566dc in pthread_cond_timedwait () from /lib/x86_64-linux-gnu/libc.so.6 #2 0x00000000004f91da in ?? () #3 0x0000000000528bf2 in PyEval_RestoreThread () #4 0x000000000064dacc in PyGILState_Ensure () #5 0x00007f5ac141e16d in Shiboken::GilState::GilState() () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/shiboken6/libshiboken6.abi3.so.6.4 #6 0x00007f5ac08cae13 in FilterWrapper::disconnectNotify(QMetaMethod const&) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/nexxT/binary/linux_x86_64/release/cnexxT.abi3.so #7 0x00007f5aab39546a in QObject::~QObject() () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #8 0x00007f5aabbd6ae6 in ?? () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/QtCore.abi3.so #9 0x00007f5ac141b93a in ?? () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/shiboken6/libshiboken6.abi3.so.6.4 #10 0x000000000058cedd in ?? () #11 0x0000000000515d7f in ?? () #12 0x000000000053fb3f in ?? () #13 0x000000000052b338 in _PyEval_EvalFrameDefault () #14 0x00000000005855a4 in ?? () #15 0x000000000058510e in ?? () #16 0x00007f5aac69d2f1 in PySide::SignalManager::callPythonMetaMethod(QMetaMethod const&, void**, _object*, bool) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/libpyside6.abi3.so.6.4 #17 0x00007f5aac69d5d6 in PySide::SignalManager::SignalManagerPrivate::qtMethodMetacall(QObject*, int, void**) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/libpyside6.abi3.so.6.4 #18 0x00007f5aab38937c in QObject::event(QEvent*) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #19 0x00007f5aab33929a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #20 0x00007f5aab33fdfd in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #21 0x00007f5aab5e11b3 in ?? () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #22 0x00007f5aab91c7a9 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #23 0x00007f5aab91ca38 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #24 0x00007f5aab91cacc in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #25 0x00007f5aab5e0b3a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #26 0x00007f5aab344d5b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #27 0x00007f5aab450eac in QThread::exec() () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #28 0x00007f5aabc729c0 in ?? () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/QtCore.abi3.so #29 0x000000000051f567 in ?? () #30 0x000000000053ac2c in PyObject_Vectorcall () #31 0x000000000052b940 in _PyEval_EvalFrameDefault () #32 0x00000000005855a4 in ?? () #33 0x0000000000585148 in ?? () #34 0x00007f5aabc72915 in ?? () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/QtCore.abi3.so #35 0x00007f5aab4cac7f in ?? () from /home/wiedeman/develop/nexxT-deadlock/venv/lib/python3.11/site-packages/PySide6/Qt/lib/libQt6Core.so.6 #36 0x00007f5ac1d56fd4 in ?? () from /lib/x86_64-linux-gnu/libc.so.6 #37 0x00007f5ac1dd75bc in ?? () from /lib/x86_64-linux-gnu/libc.so.6 Thank you for taking a look! Kind Regards Christoph
_______________________________________________ PySide mailing list PySide@qt-project.org https://lists.qt-project.org/listinfo/pyside