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

Crash handling wheel event

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: P1: Critical P1: Critical
    • 5.15.8
    • 5.14.0
    • Quick: Other
    • None
    • Windows
    • Windows
    • b71d8a4ed5 (qt/tqtc-qtdeclarative/5.15)

      There is a crash in QQuickWindowPrivate::deliverSinglePointEventUntilAccepted in certain QML applications, when scrolling a ScrollView with the mouse wheel.

      Crashing line is this

      QPointF g = item->window()>mapToGlobal(point>scenePosition().toPoint());

      item->window() returns nullptr here sometimes, so that should be checked here, like in another function in this file, where it is accessed.

      Unfortunately the QML setup where this happens is so complicated that cannot provide a simple test app to reproduce it. It has a ScrollView that contains a vertical list which has horizontal lists as delegates, so a dynamically viewed list in both dimensions. Also Loaders are used to load the delegate stuff asynchronously. Anyway, it's only using components provided by QML and QtQuick Controls. Crash call stack is here.

       

      Qt5Guid.dll!QWindow::mapToGlobal(const QPoint & pos) Line 2562 C++ // this == nullptr here
      Qt5Quickd.dll!QQuickWindowPrivate::deliverSinglePointEventUntilAccepted(QQuickPointerEvent * event) Line 2065 C++
      Qt5Quickd.dll!QQuickWindowPrivate::deliverPointerEvent(QQuickPointerEvent * event) Line 2467 C++
      Qt5Quickd.dll!QQuickWindow::wheelEvent(QWheelEvent * event) Line 2116 C++
      Qt5Guid.dll!QWindow::event(QEvent * ev) Line 2315 C++
      Qt5Quickd.dll!QQuickWindow::event(QEvent * e) Line 1774 C++
      Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3693 C++
      Qt5Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3033 C++
      Qt5Cored.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1092 C++
      Qt5Cored.dll!QCoreApplication::sendSpontaneousEvent(QObject * receiver, QEvent * event) Line 1500 C++
      Qt5Guid.dll!QGuiApplicationPrivate::processWheelEvent(QWindowSystemInterfacePrivate::WheelEvent * e) Line 2278 C++
      Qt5Guid.dll!QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent * e) Line 1924 C++
      Qt5Guid.dll!QWindowSystemInterface::sendWindowSystemEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 1169 C++
      qwindowsd.dll!QWindowsGuiEventDispatcher::sendPostedEvents() Line 83 C++
      Qt5Cored.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 525 C++
      qwindowsd.dll!QWindowsGuiEventDispatcher::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 74 C++
      Qt5Cored.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 139 C++
      Qt5Cored.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 225 C++
      Qt5Cored.dll!QCoreApplication::exec() Line 1400 C++
      Qt5Guid.dll!QGuiApplication::exec() Line 1846 C++
      Qt5Widgetsd.dll!QApplication::exec() Line 2834 C++

       

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            srutledg Shawn Rutledge
            mt Mikko Tuokko
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes