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

tst_QDockWidget::titleBarDoubleClick() causes UB in QDockWidget::event()

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P2: Important
    • None
    • 6.10
    • Widgets: Main Window
    • 0435aaccd (dev)

    Description

      The test creates a QEvent e(QEvent::NonClientAreaMouseButtonDblClick), but that type of event needs a QMouseEvent.

      Says UBSan:

      qdockwidget.cpp:1715:36: runtime error: downcast of address 0x7ffea5257d10 which does not point to an object of type 'QMouseEvent'
      0x7ffea5257d10: note: object is of type 'QEvent'
       3d 7f 00 00  c0 2b dc f4 3d 7f 00 00  b0 00 00 00 01 00 00 00  49 c1 02 3b a1 90 45 7c  20 17 03 00
                    ^~~~~~~~~~~~~~~~~~~~~~~
                    vptr for 'QEvent'
          #0 0x7f3e1bcb0633 in QDockWidget::event(QEvent*) /home/marc/Qt/qtbase-submit/src/widgets/widgets/qdockwidget.cpp:1715
          #1 0x7f3e1a262351 in QApplicationPrivate::notify_helper(QObject*, QEvent*) /home/marc/Qt/qtbase-submit/src/widgets/kernel/qapplication.cpp:3309
          #2 0x7f3e1a2e374a in QApplication::notify(QObject*, QEvent*) /home/marc/Qt/qtbase-submit/src/widgets/kernel/qapplication.cpp:3259
          #3 0x7f3df1e0ca4a in QCoreApplication::notifyInternal2(QObject*, QEvent*) /home/marc/Qt/qtbase-submit/src/corelib/kernel/qcoreapplication.cpp:1111
          #4 0x7f3df1e0f453 in QCoreApplication::sendEvent(QObject*, QEvent*) /home/marc/Qt/qtbase-submit/src/corelib/kernel/qcoreapplication.cpp:1551
          #5 0x5599b850aeee in tst_QDockWidget::titleBarDoubleClick() /home/marc/Qt/qtbase-submit/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp:869
          #6 0x5599b85e5a56 in tst_QDockWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/marc/Qt/qtbase-submit-build/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget_autogen/include/tst_qdockwidget.moc:171
          #7 0x5599b85e6873 in tst_QDockWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/marc/Qt/qtbase-submit-build/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget_autogen/include/tst_qdockwidget.moc:159
          #8 0x7f3df1f0f13b in QMetaMethodInvoker::invokeImpl(QMetaMethod, void*, Qt::ConnectionType, long long, void const* const*, char const* const*, QtPrivate::QMetaTypeInterface const* const*) /home/marc/Qt/qtbase-submit/src/corelib/kernel/qmetaobject.cpp:2801
          #9 0x7f3df1f1894d in QMetaMethod::invokeImpl(QMetaMethod, void*, Qt::ConnectionType, long long, void const* const*, char const* const*, QtPrivate::QMetaTypeInterface const* const*) /home/marc/Qt/qtbase-submit/src/corelib/kernel/qmetaobject.cpp:2640
          #10 0x7f3e275f1ff0 in std::enable_if<!std::disjunction<>::value, bool>::type QMetaMethod::invoke<void>(QObject*, Qt::ConnectionType, QTemplatedMetaMethodReturnArgument<void>) const /home/marc/Qt/qtbase-submit/src/corelib/kernel/qmetaobject.h:150
          #11 0x7f3e275f1ff0 in std::enable_if<!std::disjunction<>::value, bool>::type QMetaMethod::invoke<>(QObject*, Qt::ConnectionType) const /home/marc/Qt/qtbase-submit/src/corelib/kernel/qmetaobject.h:162
          #12 0x7f3e275f1ff0 in invokeTestMethodIfValid /home/marc/Qt/qtbase-submit/src/testlib/qtestcase.cpp:434
          #13 0x7f3e276414ea in QTest::TestMethods::invokeTestOnData(int) const /home/marc/Qt/qtbase-submit/src/testlib/qtestcase.cpp:1050
          #14 0x7f3e276493a7 in operator() /home/marc/Qt/qtbase-submit/src/testlib/qtestcase.cpp:1368
          #15 0x7f3e276493a7 in runWithWatchdog<QTest::TestMethods::invokeTest(int, QLatin1StringView, std::optional<QTest::WatchDog>&) const::<lambda()> > /home/marc/Qt/qtbase-submit/src/testlib/qtestcase.cpp:1251
          #16 0x7f3e276493a7 in QTest::TestMethods::invokeTest(int, QLatin1String, std::optional<QTest::WatchDog>&) const /home/marc/Qt/qtbase-submit/src/testlib/qtestcase.cpp:1367
          #17 0x7f3e2764df5b in QTest::TestMethods::invokeTests(QObject*) const /home/marc/Qt/qtbase-submit/src/testlib/qtestcase.cpp:1710
          #18 0x7f3e276537c4 in QTest::qRun() /home/marc/Qt/qtbase-submit/src/testlib/qtestcase.cpp:1951
          #19 0x7f3e27655977 in QTest::qExec(QObject*, int, char**) /home/marc/Qt/qtbase-submit/src/testlib/qtestcase.cpp:1823
          #20 0x5599b849bbd1 in main /home/marc/Qt/qtbase-submit/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp:2042
          #21 0x7f3deb68f082 in __libc_start_main ../csu/libc-start.c:308
          #22 0x5599b849beed in _start (/home/marc/Qt/qtbase-submit-build/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget+0x1d0eed)
      
      

      Attachments

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

        Activity

          People

            qt.team.quick.subscriptions Qt Quick and Widgets Team
            mmutz Marc Mutz
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes