State:New|TargetRelease:No Target|icon_bug|icon_katana|database:public|Resolution:Fixed|BugID:375564|
Problem summary:
Two recently discovered high-priority PySide/PyQt bugs mean that Python threads cannot be used inside any Qt applications at all as they cause all host applications to crash (or deadlock):
Steps to reproduce:
import gcimport sysimport threadingimport timetry: from PySide2 import QtWidgets from PySide2 import QtCoreexcept: try: from PyQt5 import QtWidgets from PyQt5 import QtCore except: try: from PySide import QtGui from PySide import QtCore except: try: from PyQt4 import QtGui from PyQt4 import QtCore except: raise ImportError('Could not import PySide or PyQt') QtWidgets = QtGuidef gcloop(): time.sleep(1.0) # YMMV while 1: gc.collect() time.sleep(0.1)def circular(): label = QtWidgets.QWidget() o1 = [label] o2 = [o1] o1.append(o2) label.show()label = QtWidgets.QWidget()label.show()tm = QtCore.QTimer()tm.timeout.connect(circular)tm.start(100)sys.modules['killer'] = threading.Thread(target=gcloop)sys.modules['killer'].start() Expected behaviour:
New labels are created, shown, closed, and destroyed indefinitely, until Katana is quit.
Actual behaviour:
New labels are created, shown, closed, and destroyed until Katana crashes, with a stack trace similar to the following one:
#0 0x00007fda276f253d in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /workspace/opt/Foundry/Katana3.0v1/bin/libQtCore.so.4#1 0x00007fda26a90974 in QApplication::setActiveWindow(QWidget*) () from /workspace/opt/Foundry/Katana3.0v1/bin/libQtGui.so.4#2 0x00007fda26b022d0 in QApplication::x11ProcessEvent(_XEvent*) () from /workspace/opt/Foundry/Katana3.0v1/bin/libQtGui.so.4#3 0x00007fda26b27662 in ?? () from /workspace/opt/Foundry/Katana3.0v1/bin/libQtGui.so.4#4 0x00000030db440552 in g_main_dispatch (context=0x2bc6500) at gmain.c:2449#5 g_main_context_dispatch (context=0x2bc6500) at gmain.c:3022#6 0x00000030db444d08 in g_main_context_iterate (context=0x2bc6500, block=1, dispatch=1, self=<value optimized out>) at gmain.c:3100#7 0x00000030db444ec2 in g_main_context_iteration (context=0x2bc6500, may_block=1) at gmain.c:3163#8 0x00007fda2771f015 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /workspace/opt/Foundry/Katana3.0v1/bin/libQtCore.so.4#9 0x00007fda26b276f6 in ?? () from /workspace/opt/Foundry/Katana3.0v1/bin/libQtGui.so.4#10 0x00007fda276f11af in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /workspace/opt/Foundry/Katana3.0v1/bin/libQtCore.so.4#11 0x00007fda276f14a5 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /workspace/opt/Foundry/Katana3.0v1/bin/libQtCore.so.4#12 0x00007fda276f65a9 in QCoreApplication::exec() () from /workspace/opt/Foundry/Katana3.0v1/bin/libQtCore.so.4#13 0x00007fd9e56b1d50 in ?? () from /workspace/opt/Foundry/Katana3.0v1/bin/python/PyQt4/QtGui.so#14 0x00007fda27afaf74 in PyCFunction_Call () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#15 0x00007fda27b7f0f6 in ?? () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#16 0x00007fda27b7b5da in PyEval_EvalFrameEx () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#17 0x00007fda27b7f40d in ?? () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#18 0x00007fda27b7f219 in ?? () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#19 0x00007fda27b7b5da in PyEval_EvalFrameEx () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#20 0x00007fda27b7f40d in ?? () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#21 0x00007fda27b7f219 in ?? () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#22 0x00007fda27b7b5da in PyEval_EvalFrameEx () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#23 0x00007fda27b7f40d in ?? () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#24 0x00007fda27b7f219 in ?? () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#25 0x00007fda27b7b5da in PyEval_EvalFrameEx () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#26 0x00007fda27b7d482 in PyEval_EvalCodeEx () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#27 0x00007fda27b73496 in PyEval_EvalCode () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#28 0x00007fda27b97045 in PyImport_ExecCodeModuleEx () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#29 0x00007fda27b96f0b in PyImport_ExecCodeModule () from /workspace/opt/Foundry/Katana3.0v1/bin/python2.7/lib/libpython2.7.so.1.0#30 0x0000000000417fb9 in ?? ()#31 0x000000346e41ecdd in __libc_start_main (main=0x416570, argc=1, ubp_av=0x7fff35cb2da8, init=<value optimized out>, fini=<value optimized out>, rtld_fini=<value optimized out>, stack_end=0x7fff35cb2d98) at libc-start.c:226#32 0x000000000041a1ed in ?? ()#33 0x00007fff35cb2d98 in ?? ()#34 0x000000000000001c in ?? ()#35 0x0000000000000001 in ?? ()#36 0x000000000188a970 in ?? ()#37 0x0000000000000000 in ?? () Workaround:
No known workaround.
Tested versions/platforms:
Customer version/platform:
Not supplied
We're sorry to hear that
Please tell us why