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

Crash delivering hover event to already-deleted MouseArea

    XMLWordPrintable

Details

    • b00a120d4d07d657f3226407cdae797395f63a16

    Description

      Seems to be 100% reproducible, at least on Windows:

      import QtQuick 2.1
      
      Item {
        width: 200
        height: 200
      
        MouseArea {
          id: area
          anchors.fill: parent
          hoverEnabled: true
        }
      
        Loader {
          anchors.fill: parent
          active: area.containsMouse
          sourceComponent: Rectangle {
            color: 'blue'
      
            MouseArea {
              anchors.fill: parent
              hoverEnabled: true
            }
          }
        }
      }
      

      If you move the mouse into the window, the crash occurs.

      >	Qt5Quickd.dll!QQuickItemPrivate::itemToWindowTransform()  Line 2620 + 0x6 bytes	C++
       	Qt5Quickd.dll!QQuickItemPrivate::windowToItemTransform()  Line 2611 + 0x12 bytes	C++
       	Qt5Quickd.dll!QQuickWindowPrivate::sendHoverEvent(QEvent::Type type, QQuickItem * item, const QPointF & scenePos, const QPointF & lastScenePos, QFlags<enum Qt::KeyboardModifier> modifiers, bool accepted)  Line 1375	C++
       	Qt5Quickd.dll!QQuickWindowPrivate::deliverHoverEvent(QQuickItem * item, const QPointF & scenePos, const QPointF & lastScenePos, QFlags<enum Qt::KeyboardModifier> modifiers, bool & accepted)  Line 1450	C++
       	Qt5Quickd.dll!QQuickWindowPrivate::deliverHoverEvent(QQuickItem * item, const QPointF & scenePos, const QPointF & lastScenePos, QFlags<enum Qt::KeyboardModifier> modifiers, bool & accepted)  Line 1430 + 0x1c bytes	C++
       	Qt5Quickd.dll!QQuickWindowPrivate::deliverHoverEvent(QQuickItem * item, const QPointF & scenePos, const QPointF & lastScenePos, QFlags<enum Qt::KeyboardModifier> modifiers, bool & accepted)  Line 1430 + 0x1c bytes	C++
       	Qt5Quickd.dll!QQuickWindow::mouseMoveEvent(QMouseEvent * event)  Line 1402 + 0x34 bytes	C++
       	Qt5Quickd.dll!QQuickView::mouseMoveEvent(QMouseEvent * e)  Line 598	C++
       	Qt5Guid.dll!QWindow::event(QEvent * ev)  Line 1839	C++
       	Qt5Quickd.dll!QQuickWindow::event(QEvent * e)  Line 1212	C++
       	Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e)  Line 3464 + 0x11 bytes	C++
       	Qt5Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e)  Line 2885 + 0x10 bytes	C++
       	Qt5Cored.dll!QCoreApplication::notifyInternal(QObject * receiver, QEvent * event)  Line 867 + 0x15 bytes	C++
       	Qt5Cored.dll!QCoreApplication::sendSpontaneousEvent(QObject * receiver, QEvent * event)  Line 235 + 0x38 bytes	C++
       	Qt5Guid.dll!QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent * e)  Line 1463 + 0xe bytes	C++
       	Qt5Guid.dll!QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent * e)  Line 1286 + 0x9 bytes	C++
       	Qt5Guid.dll!QWindowSystemInterface::sendWindowSystemEventsImplementation(QFlags<enum QEventLoop::ProcessEventsFlag> flags)  Line 581 + 0x9 bytes	C++
       	Qt5Guid.dll!QWindowSystemInterface::sendWindowSystemEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags)  Line 561 + 0x9 bytes	C++
       	qwindowsd.dll!QWindowsGuiEventDispatcher::sendPostedEvents()  Line 86 + 0xd bytes	C++
       	Qt5Cored.dll!qt_internal_proc(HWND__ * hwnd, unsigned int message, unsigned int wp, long lp)  Line 431	C++
       	user32.dll!_InternalCallWinProc@20()  + 0x23 bytes	
       	user32.dll!_UserCallWinProcCheckWow@36()  + 0xbd bytes	
       	user32.dll!_DispatchMessageWorker@8()  + 0xf8 bytes	
       	user32.dll!_DispatchMessageW@4()  + 0x10 bytes	
       	Qt5Cored.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags)  Line 752	C++
       	qwindowsd.dll!QWindowsGuiEventDispatcher::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags)  Line 78 + 0xd bytes	C++
       	Qt5Cored.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags)  Line 137	C++
       	Qt5Cored.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags)  Line 212 + 0x26 bytes	C++
       	Qt5Cored.dll!QCoreApplication::exec()  Line 1120 + 0x15 bytes	C++
       	Qt5Guid.dll!QGuiApplication::exec()  Line 1221	C++
       	Qt5Widgetsd.dll!QApplication::exec()  Line 2697	C++
       	qmlscene.exe!main(int argc, char * * argv)  Line 533 + 0x6 bytes	C++
       	qmlscene.exe!__tmainCRTStartup()  Line 555 + 0x19 bytes	C
       	qmlscene.exe!mainCRTStartup()  Line 371	C
      

      It's attempting to send a hover event to an object that has already been deleted (since this is a debug build, the object is full of 0xfeeefeee)

      Attachments

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

        Activity

          People

            jfaust Josh Faust
            jfaust Josh Faust
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes