Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

QGIS 3.20 on Mac crashes when certain Qt signals are emitted #44182

Closed
volaya opened this issue Jul 15, 2021 · 23 comments
Closed

QGIS 3.20 on Mac crashes when certain Qt signals are emitted #44182

volaya opened this issue Jul 15, 2021 · 23 comments
Assignees
Labels
Bug Either a bug report, or a bug fix. Let's hope for the latter! Crash/Data Corruption macOS PyQGIS Related to the PyQGIS API Regression Something which used to work, but doesn't anymore
Milestone

Comments

@volaya
Copy link
Contributor

volaya commented Jul 15, 2021

Describe the bug

There seems to be some issue with QGIS 3.20 in Mac, related to Qt signals from certain widgets. Plugins that worked fine in other versions and that work in 3.20 in other platforms, cause QGIS to crash on QGIS 3.20 on Mac.

The error is related to plugins, but its behaviour indicates that it must be a core or packaging issue.

How to Reproduce

Attached you can find a minimal plugin, which is easy to inspect (one single file with less than 70 lines), and which can be used to reproduce the error. It adds a menu at "Plugins->Test plugin->open widget", which opens a widget with a single checkbox. Clicking on the checkbox causes QGIS to crash.

The plugin works fine in 3.20 on platforms other than mac, and in older QGIS versions on any platform. On 3.20 on mac, it crashes.

Similar code (creating a widget with a checkbox, connecting its stateChanged signal, etc...) works fine if run from the console. Only when it's part of a plugin, QGIS crashes when the signal is emitted.

testplugin.zip

@volaya volaya added PyQGIS Related to the PyQGIS API Bug Either a bug report, or a bug fix. Let's hope for the latter! Crash/Data Corruption labels Jul 15, 2021
@Neofin
Copy link

Neofin commented Jul 15, 2021

Me too

@gioman gioman added macOS Regression Something which used to work, but doesn't anymore labels Jul 15, 2021
@m-kuhn
Copy link
Member

m-kuhn commented Jul 16, 2021

Thanks for reporting, do you have a stacktrace to attach?

@m-kuhn m-kuhn added the Feedback Waiting on the submitter for answers label Jul 16, 2021
@volaya
Copy link
Contributor Author

volaya commented Jul 16, 2021

trace.txt

@m-kuhn m-kuhn removed the Feedback Waiting on the submitter for answers label Jul 16, 2021
@Neofin
Copy link

Neofin commented Jul 16, 2021 via email

@purplecacti
Copy link

This appears to possibly be the same issue I have with the add spreadsheet layer: #44484

Does anyone have any idea how to fix?

My full crash log attached

crashlog.odt

@PeterPetrik
Copy link
Contributor

just noticed that this happens to crayfish & qgis2threejs too (probably as described with any plugin that has some signal/slot in pyqt used in runtime?)

@PeterPetrik
Copy link
Contributor

PeterPetrik commented Sep 7, 2021

LTR (3.16): qt 5.14.2, python 3.8.7, python: sip 4.19.21, python-pyqt5 5.14.1
PR (3.20): qt 5.15.2, python 3.8.7, python: sip 4.19.21, python: pyqt5 5.15.2

https://github.com/qgis/QGIS-Mac-Packager/blob/master/qgis_deps/recipes/python_sip/recipe.sh

@PeterPetrik PeterPetrik self-assigned this Sep 7, 2021
@jef-n
Copy link
Member

jef-n commented Sep 7, 2021

Distribution Qt Python PyQt5 SIP
bullseye 5.15.2 3.9.2 5.15.2 4.19.25
unstable 5.15.2 3.9.7 5.15.2 6.1.1 currently fails: sip6?
focal 5.12.8 3.8.10 5.14.1 4.19.21 including focal-ubuntugis
groovy 5.14.2 3.8.10 5.15.0 4.19.24
hirsute 5.15.2 3.9.5 5.15.4 4.19.25
impish 5.15.2 3.9.6 (5.15.4) (4.19.2) currently fails: no sip5-tools anymore

@PeterPetrik
Copy link
Contributor

@jef-n thanks, do you know which SIP/ QT is in the windows packages?

@jef-n
Copy link
Member

jef-n commented Sep 9, 2021

OSGeo4W Qt Python PyQt5 SIP
v2 5.15.2 3.9.5 5.15.4 5.4.0
old 5.11.2 3.7.0 5.11.3 4.19.14 only used for 3.16 (LTR)

@jlayt
Copy link

jlayt commented Sep 13, 2021

Still an issue in the new 3.20.3 package. Happens for me clicking on a QPushButton but not when clicking a QToolButton. Happens with some QComboBox as well, but not some others, and number/text edits seem fine. Think it maybe where widget signals are connected to slots, unconnected widgets seem OK? Dump of each type below.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body>
QGIS version | 3.20.3-Odense | QGIS code revision | 495fbaecaf
-- | -- | -- | --
Qt version | 5.15.2
Python version | 3.8.7
GDAL/OGR version | 3.2.3
PROJ version | 6.3.2
EPSG Registry database version | v9.8.6 (2020-01-22)
GEOS version | 3.9.1-CAPI-1.14.2
SQLite version | 3.31.1
PDAL version | 2.2.0
PostgreSQL client version | 12.3
SpatiaLite version | 4.3.0a
QWT version | 6.1.4
QScintilla2 version | 2.11.4
OS version | macOS 11.5
  |   |   |  
Active Python plugins | numericalDigitizeslyr_communityVectorBenderLPGetLibraryInfopre_ex_planAnotherDXF2ShapeplaingeometryeditorLPMapsArkSpatialpluginbuilder3MemoryLayerSaverLPFigureBuilderplugin_reloadersurvey_importprocessingdb_managerMetaSearch
</body></html>

Here's the relevant QToolButton thread:

Process:               QGIS [46568]
Path:                  /Applications/QGIS3.20.app/Contents/MacOS/QGIS
Identifier:            org.qgis.qgis3
Version:               3.20.3 (3.20.3 [])
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           QGIS [46568]
User ID:               502

Date/Time:             2021-09-13 16:07:00.991 +0100
OS Version:            macOS 11.5.2 (20G95)
Report Version:        12
Anonymous UUID:        723DF125-2DBC-46F3-B54F-3A352B2D8C29

Time Awake Since Boot: 25000 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
abort() called

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff2041792e __pthread_kill + 10
1   libsystem_pthread.dylib       	0x00007fff204465bd pthread_kill + 263
2   libsystem_c.dylib             	0x00007fff2039b406 abort + 125
3   libpython3.8.dylib            	0x000000010c69d4fc fatal_error + 60
4   libpython3.8.dylib            	0x000000010c69d4b1 Py_FatalError + 17
5   libpython3.8.dylib            	0x000000010c680100 PyEval_SaveThread.cold.1 + 16
6   libpython3.8.dylib            	0x000000010c5a2574 PyEval_SaveThread + 68
7   QtCore.so                     	0x00000001424f397d qt_metacall_worker(_sipSimpleWrapper*, _typeobject*, _sipTypeDef*, QMetaObject::Call, int, void**) + 253
8   org.qt-project.QtCore         	0x000000010ab6cf6e void doActivate<false>(QObject*, int, void**) + 1118
9   QtCore.so                     	0x00000001424ed168 pyqtBoundSignal_emit(_object*, _object*) + 312
10  libpython3.8.dylib            	0x000000010c5170a7 method_vectorcall_VARARGS + 167
11  libpython3.8.dylib            	0x000000010c5aa9b9 _PyEval_EvalFrameDefault + 33113
12  libpython3.8.dylib            	0x000000010c5118ed _PyFunction_Vectorcall + 237
13  libpython3.8.dylib            	0x000000010c51322d method_vectorcall + 413
14  libpython3.8.dylib            	0x000000010c5113bb PyVectorcall_Call + 107
15  QtCore.so                     	0x00000001424f0b8d PyQtSlot::call(_object*, _object*) const + 109
16  QtCore.so                     	0x00000001424f0a56 PyQtSlot::invoke(void**, _object*, void*, bool) const + 374
17  QtCore.so                     	0x00000001424f1645 PyQtSlotProxy::unislot(void**) + 85
18  QtCore.so                     	0x00000001424f15ba PyQtSlotProxy::qt_metacall(QMetaObject::Call, int, void**) + 58
19  org.qt-project.QtCore         	0x000000010ab6cf6e void doActivate<false>(QObject*, int, void**) + 1118
20  org.qt-project.QtWidgets      	0x0000000109d5c1df QAbstractButtonPrivate::emitClicked() + 111
21  org.qt-project.QtWidgets      	0x0000000109d5c059 QAbstractButtonPrivate::click() + 233
22  org.qt-project.QtWidgets      	0x0000000109d5d20f QAbstractButton::mouseReleaseEvent(QMouseEvent*) + 271
23  QtWidgets.so                  	0x0000000144975d8a sipQPushButton::mouseReleaseEvent(QMouseEvent*) + 106
24  org.qt-project.QtWidgets      	0x0000000109cacdfd QWidget::event(QEvent*) + 445
25  QtWidgets.so                  	0x000000014497632a sipQPushButton::event(QEvent*) + 106
26  org.qt-project.QtWidgets      	0x0000000109c729ea QApplicationPrivate::notify_helper(QObject*, QEvent*) + 266
27  org.qt-project.QtWidgets      	0x0000000109c75755 QApplication::notify(QObject*, QEvent*) + 6965
28  org.qgis.qgis3_core           	0x000000010d08b5d3 QgsApplication::notify(QObject*, QEvent*) + 67
29  org.qt-project.QtCore         	0x000000010ab39a34 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 212
30  org.qt-project.QtWidgets      	0x0000000109c73310 QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) + 896
31  org.qt-project.QtWidgets      	0x0000000109ccc022 QWidgetWindow::handleMouseEvent(QMouseEvent*) + 3266
32  org.qt-project.QtWidgets      	0x0000000109cca6e9 QWidgetWindow::event(QEvent*) + 233
33  org.qt-project.QtWidgets      	0x0000000109c729ea QApplicationPrivate::notify_helper(QObject*, QEvent*) + 266
34  org.qt-project.QtWidgets      	0x0000000109c73e11 QApplication::notify(QObject*, QEvent*) + 497
35  org.qgis.qgis3_core           	0x000000010d08b5d3 QgsApplication::notify(QObject*, QEvent*) + 67
36  org.qt-project.QtCore         	0x000000010ab39a34 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 212
37  org.qt-project.QtGui          	0x000000010a2dfe2e QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) + 3534
38  org.qt-project.QtGui          	0x000000010a2e01b1 QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) + 4433
39  org.qt-project.QtGui          	0x000000010a2c4d7b QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 219
40  libqcocoa.dylib               	0x000000011cc23260 QCocoaEventDispatcherPrivate::processPostedEvents() + 320
41  libqcocoa.dylib               	0x000000011cc239c8 QCocoaEventDispatcherPrivate::postedEventsSourceCallback(void*) + 40
42  com.apple.CoreFoundation      	0x00007fff2053f94c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
43  com.apple.CoreFoundation      	0x00007fff2053f8b4 __CFRunLoopDoSource0 + 180
44  com.apple.CoreFoundation      	0x00007fff2053f634 __CFRunLoopDoSources0 + 242
45  com.apple.CoreFoundation      	0x00007fff2053e05c __CFRunLoopRun + 893
46  com.apple.CoreFoundation      	0x00007fff2053d61c CFRunLoopRunSpecific + 563
47  com.apple.HIToolbox           	0x00007fff28783a83 RunCurrentEventLoopInMode + 292
48  com.apple.HIToolbox           	0x00007fff287836b6 ReceiveNextEventCommon + 284
49  com.apple.HIToolbox           	0x00007fff28783583 _BlockUntilNextEventMatchingListInModeWithFilter + 70
50  com.apple.AppKit              	0x00007fff22d45172 _DPSNextEvent + 864
51  com.apple.AppKit              	0x00007fff22d43945 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1364
52  com.apple.AppKit              	0x00007fff2301bea6 -[NSApplication _doModalLoop:peek:] + 301
53  com.apple.AppKit              	0x00007fff231a65ee __33-[NSApplication runModalSession:]_block_invoke_2 + 69
54  com.apple.AppKit              	0x00007fff231a6596 __33-[NSApplication runModalSession:]_block_invoke + 78
55  com.apple.AppKit              	0x00007fff2301a470 _NSTryRunModal + 100
56  com.apple.AppKit              	0x00007fff231a6491 -[NSApplication runModalSession:] + 128
57  libqcocoa.dylib               	0x000000011cc21ed6 QCocoaEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 614
58  org.qt-project.QtCore         	0x000000010ab35acf QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 431
59  org.qt-project.QtWidgets      	0x0000000109e72e9e QDialog::exec() + 526
60  QtWidgets.so                  	0x000000014486a45b meth_QDialog_exec_(_object*, _object*) + 171
61  libpython3.8.dylib            	0x000000010c51176a cfunction_call_varargs + 250
62  libpython3.8.dylib            	0x000000010c510ef6 _PyObject_MakeTpCall + 150
63  libpython3.8.dylib            	0x000000010c5aabcc _PyEval_EvalFrameDefault + 33644
64  libpython3.8.dylib            	0x000000010c5118ed _PyFunction_Vectorcall + 237
65  libpython3.8.dylib            	0x000000010c51322d method_vectorcall + 413
66  libpython3.8.dylib            	0x000000010c5113bb PyVectorcall_Call + 107
67  QtCore.so                     	0x00000001424f0b8d PyQtSlot::call(_object*, _object*) const + 109
68  QtCore.so                     	0x00000001424f0a56 PyQtSlot::invoke(void**, _object*, void*, bool) const + 374
69  QtCore.so                     	0x00000001424f1645 PyQtSlotProxy::unislot(void**) + 85
70  QtCore.so                     	0x00000001424f15ba PyQtSlotProxy::qt_metacall(QMetaObject::Call, int, void**) + 58
71  org.qt-project.QtCore         	0x000000010ab6cf6e void doActivate<false>(QObject*, int, void**) + 1118
72  org.qt-project.QtWidgets      	0x0000000109c693c6 QAction::activate(QAction::ActionEvent) + 310
73  org.qt-project.QtWidgets      	0x0000000109d5c000 QAbstractButtonPrivate::click() + 144
74  org.qt-project.QtWidgets      	0x0000000109d5d20f QAbstractButton::mouseReleaseEvent(QMouseEvent*) + 271
75  org.qt-project.QtWidgets      	0x0000000109e57c4f QToolButton::mouseReleaseEvent(QMouseEvent*) + 15
76  org.qt-project.QtWidgets      	0x0000000109cacdfd QWidget::event(QEvent*) + 445
77  org.qt-project.QtWidgets      	0x0000000109e5840f QToolButton::event(QEvent*) + 319
78  org.qt-project.QtWidgets      	0x0000000109c729ea QApplicationPrivate::notify_helper(QObject*, QEvent*) + 266
79  org.qt-project.QtWidgets      	0x0000000109c75755 QApplication::notify(QObject*, QEvent*) + 6965
80  org.qgis.qgis3_core           	0x000000010d08b5d3 QgsApplication::notify(QObject*, QEvent*) + 67
81  org.qt-project.QtCore         	0x000000010ab39a34 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 212
82  org.qt-project.QtWidgets      	0x0000000109c73310 QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) + 896
83  org.qt-project.QtWidgets      	0x0000000109ccc022 QWidgetWindow::handleMouseEvent(QMouseEvent*) + 3266
84  org.qt-project.QtWidgets      	0x0000000109cca6e9 QWidgetWindow::event(QEvent*) + 233
85  org.qt-project.QtWidgets      	0x0000000109c729ea QApplicationPrivate::notify_helper(QObject*, QEvent*) + 266
86  org.qt-project.QtWidgets      	0x0000000109c73e11 QApplication::notify(QObject*, QEvent*) + 497
87  org.qgis.qgis3_core           	0x000000010d08b5d3 QgsApplication::notify(QObject*, QEvent*) + 67
88  org.qt-project.QtCore         	0x000000010ab39a34 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 212
89  org.qt-project.QtGui          	0x000000010a2dfe2e QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) + 3534
90  org.qt-project.QtGui          	0x000000010a2c4d7b QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 219
91  libqcocoa.dylib               	0x000000011cc23260 QCocoaEventDispatcherPrivate::processPostedEvents() + 320
92  libqcocoa.dylib               	0x000000011cc239c8 QCocoaEventDispatcherPrivate::postedEventsSourceCallback(void*) + 40
93  com.apple.CoreFoundation      	0x00007fff2053f94c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
94  com.apple.CoreFoundation      	0x00007fff2053f8b4 __CFRunLoopDoSource0 + 180
95  com.apple.CoreFoundation      	0x00007fff2053f634 __CFRunLoopDoSources0 + 242
96  com.apple.CoreFoundation      	0x00007fff2053e05c __CFRunLoopRun + 893
97  com.apple.CoreFoundation      	0x00007fff2053d61c CFRunLoopRunSpecific + 563
98  com.apple.HIToolbox           	0x00007fff28783a83 RunCurrentEventLoopInMode + 292
99  com.apple.HIToolbox           	0x00007fff287836b6 ReceiveNextEventCommon + 284
100 com.apple.HIToolbox           	0x00007fff28783583 _BlockUntilNextEventMatchingListInModeWithFilter + 70
101 com.apple.AppKit              	0x00007fff22d45172 _DPSNextEvent + 864
102 com.apple.AppKit              	0x00007fff22d43945 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1364
103 com.apple.AppKit              	0x00007fff22d35c69 -[NSApplication run] + 586
104 libqcocoa.dylib               	0x000000011cc2262f QCocoaEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 2495
105 org.qt-project.QtCore         	0x000000010ab35acf QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 431
106 org.qt-project.QtCore         	0x000000010ab3a042 QCoreApplication::exec() + 130
107 org.qgis.qgis3                	0x00000001079e98ff main + 25599
108 libdyld.dylib                 	0x00007fff20461f3d start + 1

And here's the QComboBox.

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff2041792e __pthread_kill + 10
1   libsystem_pthread.dylib       	0x00007fff204465bd pthread_kill + 263
2   libsystem_c.dylib             	0x00007fff2039b406 abort + 125
3   libpython3.8.dylib            	0x000000010daac4fc fatal_error + 60
4   libpython3.8.dylib            	0x000000010daac4b1 Py_FatalError + 17
5   libpython3.8.dylib            	0x000000010da8f100 PyEval_SaveThread.cold.1 + 16
6   libpython3.8.dylib            	0x000000010d9b1574 PyEval_SaveThread + 68
7   QtCore.so                     	0x000000014387397d qt_metacall_worker(_sipSimpleWrapper*, _typeobject*, _sipTypeDef*, QMetaObject::Call, int, void**) + 253
8   org.qt-project.QtCore         	0x000000010c203f6e void doActivate<false>(QObject*, int, void**) + 1118
9   org.qt-project.QtWidgets      	0x000000010aececed QComboBoxPrivate::_q_emitCurrentIndexChanged(QModelIndex const&) + 189
10  org.qt-project.QtWidgets      	0x000000010aecb4c1 QComboBoxPrivate::setCurrentIndex(QModelIndex const&) + 609
11  org.qt-project.QtWidgets      	0x000000010aecfbd6 QComboBoxPrivate::_q_itemSelected(QModelIndex const&) + 86
12  org.qt-project.QtCore         	0x000000010c2040d5 void doActivate<false>(QObject*, int, void**) + 1477
13  org.qt-project.QtWidgets      	0x000000010aecd8e5 QComboBoxPrivateContainer::eventFilter(QObject*, QEvent*) + 1205
14  org.qt-project.QtCore         	0x000000010c1d0ceb QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) + 155
15  org.qt-project.QtWidgets      	0x000000010adcf9d5 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 245
16  org.qt-project.QtWidgets      	0x000000010add2755 QApplication::notify(QObject*, QEvent*) + 6965
17  org.qgis.qgis3_core           	0x000000010e49a5d3 QgsApplication::notify(QObject*, QEvent*) + 67
18  org.qt-project.QtCore         	0x000000010c1d0a34 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 212
19  org.qt-project.QtWidgets      	0x000000010add0310 QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) + 896
20  org.qt-project.QtWidgets      	0x000000010ae28d0d QWidgetWindow::handleMouseEvent(QMouseEvent*) + 2477
21  org.qt-project.QtWidgets      	0x000000010ae276e9 QWidgetWindow::event(QEvent*) + 233
22  org.qt-project.QtWidgets      	0x000000010adcf9ea QApplicationPrivate::notify_helper(QObject*, QEvent*) + 266
23  org.qt-project.QtWidgets      	0x000000010add0e11 QApplication::notify(QObject*, QEvent*) + 497
24  org.qgis.qgis3_core           	0x000000010e49a5d3 QgsApplication::notify(QObject*, QEvent*) + 67
25  org.qt-project.QtCore         	0x000000010c1d0a34 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 212
26  org.qt-project.QtGui          	0x000000010b976e2e QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) + 3534
27  org.qt-project.QtGui          	0x000000010b9771b1 QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) + 4433
28  org.qt-project.QtGui          	0x000000010b95bd7b QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 219
29  libqcocoa.dylib               	0x000000011dfa6260 QCocoaEventDispatcherPrivate::processPostedEvents() + 320
30  libqcocoa.dylib               	0x000000011dfa69c8 QCocoaEventDispatcherPrivate::postedEventsSourceCallback(void*) + 40
31  com.apple.CoreFoundation      	0x00007fff2053f94c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
32  com.apple.CoreFoundation      	0x00007fff2053f8b4 __CFRunLoopDoSource0 + 180
33  com.apple.CoreFoundation      	0x00007fff2053f634 __CFRunLoopDoSources0 + 242
34  com.apple.CoreFoundation      	0x00007fff2053e05c __CFRunLoopRun + 893
35  com.apple.CoreFoundation      	0x00007fff2053d61c CFRunLoopRunSpecific + 563
36  com.apple.HIToolbox           	0x00007fff28783a83 RunCurrentEventLoopInMode + 292
37  com.apple.HIToolbox           	0x00007fff287836b6 ReceiveNextEventCommon + 284
38  com.apple.HIToolbox           	0x00007fff28783583 _BlockUntilNextEventMatchingListInModeWithFilter + 70
39  com.apple.AppKit              	0x00007fff22d45172 _DPSNextEvent + 864
40  com.apple.AppKit              	0x00007fff22d43945 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1364
41  com.apple.AppKit              	0x00007fff22d35c69 -[NSApplication run] + 586
42  libqcocoa.dylib               	0x000000011dfa562f QCocoaEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 2495
43  org.qt-project.QtCore         	0x000000010c1ccacf QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 431
44  org.qt-project.QtCore         	0x000000010c1d1042 QCoreApplication::exec() + 130
45  org.qgis.qgis3                	0x0000000108d6b8ff main + 25599
46  libdyld.dylib                 	0x00007fff20461f3d start + 1

@PeterPetrik PeterPetrik added this to the 3.22.0 milestone Sep 14, 2021
@PeterPetrik
Copy link
Contributor

PeterPetrik commented Sep 17, 2021

@volaya @jlayt @purplecacti @Neofin can you please test with the nightly build, e.g. https://qgis.org/downloads/macos/nightly/qgis_nightly_master_20210916_124111.dmg

The solution was to bump the sip/pyqt/qt to the versions that talk together in qgis-deps-0.9.0
I am tempted not to spend extra time for u 3.20 version to use the new set of deps as it is going EOL in month...

@jlayt
Copy link

jlayt commented Sep 17, 2021

Tested and can confirm this is resolved in the nightly.

In two minds about not updating 3.20, I can appreciate it will save you a lot of work, but we have people using 3.20 as it resolves other issues in 3.16. At the moment they keep having to switch versions mid workflow. Then again, we have other issues we're waiting for 3.22 for as well...

Some 5-6 weeks is a long wait, and it is the first link on the downloads page, so most people downloading the Mac installer for that time will get a crashy install soon as they use a plugin, which is a major use case and not a great impression.

@Neofin
Copy link

Neofin commented Sep 18, 2021 via email

@Neofin
Copy link

Neofin commented Sep 18, 2021 via email

@Neofin
Copy link

Neofin commented Sep 18, 2021 via email

@Neofin
Copy link

Neofin commented Sep 18, 2021 via email

@nyalldawson
Copy link
Collaborator

That's a plugin bug, needs to be reported to the plugin author

@Neofin
Copy link

Neofin commented Sep 19, 2021 via email

@PeterPetrik
Copy link
Contributor

@jlayt I understand your concerns. Isn't possible to use nightly builds instead of 3.20 for the time being in your team?

@jlayt
Copy link

jlayt commented Sep 20, 2021

@PeterPetrik I guess I could get Munki to spoof it as a 3.20 update, but 3.22 has only just gone into feature freeze so I'm not sure it's stable enough yet to take that risk! Maybe when hard freeze kicks in.

@PeterPetrik
Copy link
Contributor

@jlayt let's think about it the other way for a minute. What makes you think that if I just compile 3.20 with a completely new set of libraries (different python, sip, proj, ...) do a small smoke test myself, and publish it on the official download page it would be safer? There could be any other new bug introduced like you would not be able to do coordinate transformations correctly or anything else. And it would not even go through the nightly-FF-testing period as the current 3.22 release ...

@agodfrind
Copy link

I'm observing those crashes with 3.20. I had the same crashes with 3.16, but I had a workaround: explicitly setting QT_QPA_PLATFORM_PLUGIN_PATH:

export QT_QPA_PLATFORM_PLUGIN_PATH=/Applications/QGIS.app/Contents/Plugins/platforms/

That no longer has any effect on 3.20

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Either a bug report, or a bug fix. Let's hope for the latter! Crash/Data Corruption macOS PyQGIS Related to the PyQGIS API Regression Something which used to work, but doesn't anymore
Projects
None yet
Development

No branches or pull requests

10 participants