Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-118454

Crash in QQuickTapHandler::setPressed() with nullptr access

    XMLWordPrintable

Details

    • Windows

    Description

      Have no reproducer,  just found such crashes among our users crash reports.

      Unhandled exception thrown: read access violation.
      **event** was nullptr.
      

      Call stack:

       	[Inline Frame] Qt6Quick.dll!QInputEvent::timestamp() Line 58	C++
      >	Qt6Quick.dll!QQuickTapHandler::setPressed(bool press, bool cancel, QPointerEvent * event, QEventPoint & point) Line 369	C++
       	Qt6Quick.dll!QQuickTapHandler::onGrabChanged(QQuickPointerHandler * grabber, QPointingDevice::GrabTransition transition, QPointerEvent * ev, QEventPoint & point) Line 440	C++
       	Qt6Quick.dll!QQuickDeliveryAgentPrivate::onGrabChanged(QObject * grabber, QPointingDevice::GrabTransition transition, const QPointerEvent * event, const QEventPoint & point) Line 1719	C++
       	[Inline Frame] Qt6Quick.dll!QtPrivate::FunctorCall<QtPrivate::IndexesList<0,1,2,3>,QtPrivate::List<QObject *,enum QPointingDevice::GrabTransition,QPointerEvent const *,QEventPoint const &>,void,void (__cdecl QQuickDeliveryAgentPrivate::*)(QObject *,enum QPointingDevice::GrabTransition,QPointerEvent const *,QEventPoint const &)>::call(void(QQuickDeliveryAgentPrivate::*)(QObject *, QPointingDevice::GrabTransition, const QPointerEvent *, const QEventPoint &)) Line 137	C++
       	[Inline Frame] Qt6Quick.dll!QtPrivate::FunctionPointer<void (__cdecl QQuickDeliveryAgentPrivate::*)(QObject *,enum QPointingDevice::GrabTransition,QPointerEvent const *,QEventPoint const &)>::call(void(QQuickDeliveryAgentPrivate::*)(QObject *, QPointingDevice::GrabTransition, const QPointerEvent *, const QEventPoint &)) Line 174	C++
       	Qt6Quick.dll!QtPrivate::QPrivateSlotObject<void (__cdecl QQuickDeliveryAgentPrivate::*)(QObject *,enum QPointingDevice::GrabTransition,QPointerEvent const *,QEventPoint const &),QtPrivate::List<QObject *,enum QPointingDevice::GrabTransition,QPointerEvent const *,QEventPoint const &>,void>::impl(int which, QtPrivate::QSlotObjectBase * this_, QObject * r, void * * a, bool * ret) Line 297	C++
       	[Inline Frame] Qt6Core.dll!QtPrivate::QSlotObjectBase::call(QObject *) Line 374	C++
       	Qt6Core.dll!doActivate<0>(QObject * sender, int signal_index, void * * argv) Line 4036	C++
       	Qt6Core.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 4097	C++
       	Qt6Gui.dll!QPointingDevice::grabChanged(QObject * _t1, QPointingDevice::GrabTransition _t2, const QPointerEvent * _t3, const QEventPoint & _t4) Line 411	C++
       	Qt6Gui.dll!QPointingDevicePrivate::setExclusiveGrabber(const QPointerEvent * event, const QEventPoint & point, QObject * exclusiveGrabber) Line 518	C++
       	Qt6Quick.dll!QQuickDeliveryAgentPrivate::handleWindowDeactivate(QQuickWindow * win) Line 1315	C++
       	Qt6Core.dll!doActivate<0>(QObject * sender, int signal_index, void * * argv) Line 4053	C++
       	Qt6Core.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 4097	C++
       	[Inline Frame] Qt6Gui.dll!QGuiApplication::applicationStateChanged(Qt::ApplicationState _t1) Line 594	C++
       	[Inline Frame] Qt6Gui.dll!QGuiApplicationPrivate::setApplicationState(Qt::ApplicationState) Line 3819	C++
       	Qt6Gui.dll!QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent * e) Line 2551	C++
       	Qt6Gui.dll!QWindowSystemInterface::sendWindowSystemEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 1100	C++
       	Qt6Gui.dll!QWindowSystemInterface::flushWindowSystemEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 1065	C++
       	qwindows.dll!QWindowsWindow::handleWindowStateChange(QFlags<enum Qt::WindowState> state) Line 2511	C++
       	qwindows.dll!QWindowsWindow::handleResized(int wParam, __int64 lParam) Line 2280	C++
       	qwindows.dll!QWindowsContext::windowsProc(HWND__ * hwnd, unsigned int message, QtWindows::WindowsEventType et, unsigned __int64 wParam, __int64 lParam, __int64 * result, QWindowsWindow * * platformWindowPtr) Line 1131	C++
       	qwindows.dll!qWindowsWndProc(HWND__ * hwnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 1489	C++
      ...
      

      Pay attention on QQuickDeliveryAgentPrivate::handleWindowDeactivate() in the call stack, which calls

      devPriv->setExclusiveGrabber(nullptr, epd.eventPoint, nullptr);
      

      So, event is nullptr, thereby.

      Attachments

        Issue Links

          For Gerrit Dashboard: QTBUG-118454
          # Subject Branch Project Status CR V

          Activity

            People

              srutledg Shawn Rutledge
              studiosus Vladimir Belyavsky
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: