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

tst_qmenu crashes with MSVC in debug mode

    XMLWordPrintable

Details

    • Windows
    • e19b633c4 (dev), 042e713cb (6.9), 167af1611 (6.8)

    Description

      tst_QMenu::keyboardNavigation() crashes with msvc 2022 in debug mode in genericToString() when using QCOMPARE() with a nullptr as done in line 461:

      QCOMPARE(menus[expected_menu]->activeAction(), nullptr);
      

      The stacktrace is:

      >	tst_qmenu.exe!QTest::Internal::genericToString<std::nullptr_t>(const void * arg) Zeile 378	C++
       	Qt6Testd.dll!QTestResult::reportResult(bool success, const void * lhs, const void * rhs, const char *(*)(const void *) lhsFormatter, const char *(*)(const void *) rhsFormatter, const char * lhsExpr, const char * rhsExpr, QTest::ComparisonOperation op, const char * file, int line, const char * failureMessage) Zeile 718	C++
       	Qt6Testd.dll!QTest::compare_helper(bool success, const char * failureMsg, const void * actualPtr, const void * expectedPtr, const char *(*)(const void *) actualFormatter, const char *(*)(const void *) expectedFormatter, const char * actual, const char * expected, const char * file, int line) Zeile 2836	C++
       	tst_qmenu.exe!QTest::compare_ptr_helper(const volatile QObject * t1, void * __formal, const char * actual, const char * expected, const char * file, int line) Zeile 616	C++
       	tst_qmenu.exe!QTest::qCompare<QAction>(QAction * t1, void * __formal, const char * actual, const char * expected, const char * file, int line) Zeile 697	C++
       	tst_qmenu.exe!tst_QMenu::keyboardNavigation() Zeile 461	C++
       	tst_qmenu.exe!tst_QMenu::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Zeile 256	C++
       	Qt6Cored.dll!QMetaMethodInvoker::invokeImpl(QMetaMethod self, void * target, Qt::ConnectionType connectionType, __int64 paramCount, const void * const * parameters, const char * const * typeNames, const QtPrivate::QMetaTypeInterface * const * metaTypes) Zeile 2801	C++
       	Qt6Cored.dll!QMetaMethod::invokeImpl(QMetaMethod self, void * target, Qt::ConnectionType connectionType, __int64 paramCount, const void * const * parameters, const char * const * typeNames, const QtPrivate::QMetaTypeInterface * const * metaTypes) Zeile 2639	C++
       	Qt6Testd.dll!QMetaMethod::invoke<void>(QObject * obj, Qt::ConnectionType c, QTemplatedMetaMethodReturnArgument<void> r) Zeile 152	C++
       	Qt6Testd.dll!QMetaMethod::invoke<>(QObject * obj, Qt::ConnectionType c) Zeile 163	C++
       	Qt6Testd.dll!QTest::invokeTestMethodIfValid(QMetaMethod m, QObject * obj) Zeile 435	C++
       	Qt6Testd.dll!QTest::TestMethods::invokeTestOnData(int index) Zeile 1053	C++
       	Qt6Testd.dll!QTest::TestMethods::invokeTest::__l23::<lambda_5>::operator()() Zeile 1371	C++
       	Qt6Testd.dll!QTest::runWithWatchdog<`QTest::TestMethods::invokeTest'::`23'::<lambda_5>>(std::optional<QTest::WatchDog> & watchDog, QTest::TestMethods::invokeTest::__l23::<lambda_5> && f) Zeile 1254	C++
       	Qt6Testd.dll!QTest::TestMethods::invokeTest(int index, QLatin1String tag, std::optional<QTest::WatchDog> & watchDog) Zeile 1370	C++
       	Qt6Testd.dll!QTest::TestMethods::invokeTests(QObject * testObject) Zeile 1713	C++
       	Qt6Testd.dll!QTest::qRun() Zeile 1952	C++
       	Qt6Testd.dll!QTest::qExec(QObject * testObject, int argc, char * * argv) Zeile 1826	C++
       	tst_qmenu.exe!main(int argc, char * * argv) Zeile 2208	C++
       	[Externer Code]	
      

      arg in frame 0 is the nullptr from QCOMPARE

      The fix is easy - use QVERIFY() but I wonder if there is a bug in msvc or in Qt.
      It does not crash when using

      QAction *a = nullptr;
      QCOMPARE(menus[expected_menu]->activeAction(), a);
      

      As now the compiler resolves the type correctly I would guess.

      Attachments

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

        Activity

          People

            thiago Thiago Macieira
            chehrlic Christian Ehrlicher
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes