-
Bug
-
Resolution: Fixed
-
P1: Critical
-
6.5.7, 6.5.8
-
None
-
macOS 14.7.1 (23H222)
-
-
74e5a51ba (dev), 4874a7b13 (6.9), 0d3d1e290 (6.8), bdcb48007 (tqtc/lts-6.5)
Deleting a QComboBox that has focus and was "opened" before while some Accessibility feature of macOS (e.g. Voice Over) is enabled, leads to a crash with the following backtrace:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 QtWidgets 0x103c17de0 0x1039b0000 + 2522592 1 libqcocoa.dylib 0x102c60f74 QCocoaAccessible::shouldBeIgnored(QAccessibleInterface*) + 32 (qcocoaaccessibility.mm:195) 2 AppKit 0x190ba5ca4 __NSAccessibilityEntryPointIsAccessibilityElement_block_invoke + 424 3 AppKit 0x190ba5ab8 NSAccessibilityPerformEntryPointBOOL + 44 4 AppKit 0x1905a0454 NSAccessibilityEntryPointIsAccessibilityElement + 140 5 AppKit 0x1906914b4 NSAccessibilityUnignoredAncestor + 24 6 AppKit 0x190ff5098 -[NSWindow(NSWindowAccessibility) accessibilityFocusedUIElement] + 88 7 AppKit 0x1905f56ac NSAccessibilityHandleFocusChangedForce + 136 8 AppKit 0x190614c90 -[NSWindow _realMakeFirstResponder:] + 724 9 libqcocoa.dylib 0x102c25a8c QCocoaWindow::~QCocoaWindow() + 304 (qcocoawindow.mm:151) 10 libqcocoa.dylib 0x102c25dcc QCocoaWindow::~QCocoaWindow() + 4 (qcocoawindow.mm:147) [inlined] 11 libqcocoa.dylib 0x102c25dcc QCocoaWindow::~QCocoaWindow() + 4 (qcocoawindow.mm:147) [inlined] 12 libqcocoa.dylib 0x102c25dcc non-virtual thunk to QCocoaWindow::~QCocoaWindow() + 16 13 QtGui 0x102ead470 QWindowPrivate::destroy() + 168 (qwindow.cpp:2022) 14 QtWidgets 0x103a19ad8 0x1039b0000 + 432856 15 QtWidgets 0x103a19bf8 0x1039b0000 + 433144 16 QtWidgets 0x1039f7244 QWidget::destroy(bool, bool) + 648 17 QtWidgets 0x1039f6d34 QWidget::~QWidget() + 1208 18 QtWidgets 0x103ad15e4 QComboBoxPrivateContainer::~QComboBoxPrivateContainer() + 124 19 QtWidgets 0x103ad480c QComboBox::~QComboBox() + 140 20 QtWidgets 0x103ad4834 QComboBox::~QComboBox() + 12 21 combobox 0x102989fe4 Window::recreateComboBox() + 108 22 combobox 0x10298b058 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (Window::*)()>::call(void (Window::*)(), Window*, void**) + 140 23 combobox 0x10298af80 void QtPrivate::FunctionPointer<void (Window::*)()>::call<QtPrivate::List<>, void>(void (Window::*)(), Window*, void**) + 80 24 combobox 0x10298ae4c QtPrivate::QSlotObject<void (Window::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) + 172 25 QtCore 0x104abbb94 QtPrivate::QSlotObjectBase::call(QObject*, void**) + 28 (qobjectdefs_impl.h:374) [inlined] 26 QtCore 0x104abbb94 void doActivate<false>(QObject*, int, void**) + 1320 (qobject.cpp:4063) 27 QtWidgets 0x103ab91fc 0x1039b0000 + 1085948 28 QtWidgets 0x103ab907c 0x1039b0000 + 1085564 29 QtWidgets 0x103ab9f7c QAbstractButton::mouseReleaseEvent(QMouseEvent*) + 172 30 QtWidgets 0x103a05af8 QWidget::event(QEvent*) + 132 31 QtWidgets 0x1039bc5d4 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 272 32 QtWidgets 0x1039be630 QApplication::notify(QObject*, QEvent*) + 5112 33 QtCore 0x104a71b94 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 292 (qcoreapplication.cpp:1127) 34 QtWidgets 0x1039bcb74 QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) + 808 35 QtWidgets 0x103a1aa80 0x1039b0000 + 436864 36 QtWidgets 0x103a19d38 0x1039b0000 + 433464 37 QtWidgets 0x1039bc5d4 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 272 38 QtWidgets 0x1039bd438 QApplication::notify(QObject*, QEvent*) + 512 39 QtCore 0x104a71b94 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 292 (qcoreapplication.cpp:1127) 40 QtGui 0x102e63520 QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) + 1728 (qguiapplication.cpp:2379) 41 QtGui 0x102eba8e4 QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 396 (qwindowsysteminterface.cpp:1094) 42 libqcocoa.dylib 0x102c02f9c QCocoaEventDispatcherPrivate::postedEventsSourceCallback(void*) + 560 (qcocoaeventdispatcher.mm:921) 43 CoreFoundation 0x18ccc54b8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28 44 CoreFoundation 0x18ccc544c __CFRunLoopDoSource0 + 176 45 CoreFoundation 0x18ccc51bc __CFRunLoopDoSources0 + 244 46 CoreFoundation 0x18ccc3da8 __CFRunLoopRun + 828 47 CoreFoundation 0x18ccc3414 CFRunLoopRunSpecific + 608 48 HIToolbox 0x19746e19c RunCurrentEventLoopInMode + 292 49 HIToolbox 0x19746de2c ReceiveNextEventCommon + 220 50 HIToolbox 0x19746dd30 _BlockUntilNextEventMatchingListInModeWithFilter + 76 51 AppKit 0x190522cc8 _DPSNextEvent + 660 52 AppKit 0x190d194d0 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 700 53 AppKit 0x190515ffc -[NSApplication run] + 476 54 libqcocoa.dylib 0x102c00b10 QCocoaEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 2160 (qcocoaeventdispatcher.mm:405) 55 QtCore 0x104a7b7fc QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 36 (qeventloop.cpp:100) [inlined] 56 QtCore 0x104a7b7fc QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 532 (qeventloop.cpp:182) 57 QtCore 0x104a72220 QCoreApplication::exec() + 112 (qcoreapplication.cpp:1448) 58 combobox 0x10298989c main + 84 59 dyld 0x18c85b154 start + 2476
See attached minimal example ComboBoxes.zip to reproduce it:
1. Enable some Accessibility feature (e.g. Voice Over)
2. Start the example application
3. Select a different entry in the ComboBox
4. Click on "Recreate ComboBox"
The crash doesn't happen if you select a line edit after editing the ComboBox, or if you just use "tab" to get the focus on the ComboBox, without "opening" it.