Details
-
Bug
-
Resolution: Invalid
-
P2: Important
-
None
-
5.11.3
-
None
-
Operating System: Gentoo
qtcore-5.11.3-r2
PyQt5-5.10.1-r1
Python 3.6.5
Description
When using PyQT5 bindings and attempting to run a test on a popup/right click dialog, the test will, in come cases, abort.
Steps to reproduce:
- git clone https://gitlab.com/djsumdog/mpvbuddy.git
- cd mpvbuddy
- git checkout 1ada83a
- pytest -v mpvbuddy/gui/test_popup.py
If I run pytest through valgrind, I see the following:
==3590== Process terminating with default action of signal 4 (SIGILL) ==3590== Illegal opcode at address 0x360080D3 ==3590== at 0x360080D3: QRandomGenerator::SystemGenerator::generate(unsigned int*, unsigned int*) (in /usr/lib64/libQt5Core.so.5.11.3) ==3590== by 0x3606B70E: qt_create_qhash_seed() (in /usr/lib64/libQt5Core.so.5.11.3) ==3590== by 0x3606C1EE: QHashData::detach_helper(void (*)(QHashData::Node*, void*), void (*)(QHashData::Node*), int, int) (in /usr/lib64/libQt5Core.so.5.11.3) ==3590== by 0x3742C9F7: Chimera::parse(QByteArray const&, char const*) (in /usr/lib64/python3.6/site-packages/PyQt5/QtCore.so) ==3590== by 0x37439344: qpycore_pyqtSignal_New(char const*, bool*) (in /usr/lib64/python3.6/site-packages/PyQt5/QtCore.so) ==3590== by 0x3743977E: qpycore_get_lazy_attr (in /usr/lib64/python3.6/site-packages/PyQt5/QtCore.so) ==3590== by 0x37017568: add_all_lazy_attrs (in /usr/lib64/python3.6/site-packages/sip.so) ==3590== by 0x37017904: sipSimpleWrapper_new (in /usr/lib64/python3.6/site-packages/sip.so) ==3590== by 0x4F3DB64: type_call (in /usr/lib64/libpython3.6m.so.1.0) ==3590== by 0x4EBA8C5: PyObject_Call (in /usr/lib64/libpython3.6m.so.1.0) ==3590== by 0x370270F8: sipWrapInstance (in /usr/lib64/python3.6/site-packages/sip.so) ==3590== by 0x37016383: addInstances (in /usr/lib64/python3.6/site-packages/sip.so)
On later commits I change
self.app = QApplication([])
to this
self.app = QApplication(sys.argv)
and the tests work again, but it's not consistent. On gitlab's CI, I'll still get aborts. I suspect there's a memory error somewhere within the window initialization.