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

Assert in qml engine "Q_ASSERT(m()->internalClass->vtable)"

    XMLWordPrintable

Details

    • Linux/X11

    Description

      I can reproduce the crash by clicking "Search" in Plasma systemsettings. qtdeclarative is at https://invent.kde.org/qt/qt/qtdeclarative/-/commit/2bc1c820902261a46d35d8f7c0eefa7adc2be909

      (gdb) bt
      #0  QV4::Value::as<QV4::QObjectWrapper>() const (this=0x7ffff2609a80)
          at /home/qydw/kde/src/qtdeclarative/src/qml/jsruntime/qv4value_p.h:136
      #1  0x00007ffff6b7aee2 in QV4::Value::as<QV4::QObjectWrapper>()
          (this=<optimized out>)
          at /home/qydw/kde/src/qtdeclarative/src/qml/jsruntime/qv4value_p.h:151
      #2  0x00007ffff6c760b8 in QV4::(anonymous namespace)::markWeakValues(QV4::GCStateMachine*, QV4::(anonymous namespace)::ExtraData&)
          (that=0x7178c0, stateData=std::variant [index 1] = {...})
          at /home/qydw/kde/src/qtdeclarative/src/qml/memory/qv4mm.cpp:749
      #3  0x00007ffff6c7678e in QV4::GCStateMachine::transition()
          (this=0x7178c0)
          at /home/qydw/kde/src/qtdeclarative/src/qml/memory/qv4mm.cpp:1473
      #4  0x00007ffff6c77345 in QV4::GCStateMachine::step()
          (this=<optimized out>)
          at /home/qydw/kde/src/qtdeclarative/src/qml/memory/qv4mm_p.h:79
      #5  QV4::MemoryManager::runGC() (this=this@entry=0x657740)
          at /home/qydw/kde/src/qtdeclarative/src/qml/memory/qv4mm.cpp:1258
      #6  0x00007ffff6babb3f in QV4::MemoryManager::allocate(QV4::BlockAllocator*, unsigned long) (this=0x657740, allocator=0x657750, size=size@entry=96)
          at /home/qydw/kde/src/qtdeclarative/src/qml/memory/qv4mm_p.h:396
      #7  0x00007ffff6c786f2 in QV4::MemoryManager::allocData(unsigned long)
          (this=<optimized out>, size=size@entry=96)
          at /home/qydw/kde/src/qtdeclarative/src/qml/memory/qv4mm.cpp:1004
      #8  0x00007ffff6c7881d in QV4::MemoryManager::allocObjectWithMemberData(QV4::VTable const*, unsigned int)
          (this=this@entry=0x657740, vtable=vtable@entry=0x7ffff6fd8560 <QV4::QQmlTypeWrapper::static_vtbl>, nMembers=<optimized out>)
          at /home/qydw/kde/src/qtdeclarative/src/qml/memory/qv4mm.cpp:1016
      #9  0x00007ffff6da4b7f in QV4::MemoryManager::allocateObject<QV4::QQmlTypeWrapper>(QV4::Heap::InternalClass*)
          (this=this@entry=0x657740, ic=0x7fffd8690600)
          at /home/qydw/kde/src/qtdeclarative/src/qml/memory/qv4mm_p.h:248
      #10 0x00007ffff6da4bfb in QV4::MemoryManager::allocateObject<QV4::QQmlTypeWrapper>(QV4::InternalClass*)
          (this=this@entry=0x657740, ic=ic@entry=0x7fffd89bf5d8)
          at /home/qydw/kde/src/qtdeclarative/src/qml/jsruntime/qv4managed_p.h:189
      #11 0x00007ffff6da4ca0 in QV4::MemoryManager::allocateObject<QV4::QQmlTypeWrapper>() (this=0x657740)
          at /home/qydw/kde/src/qtdeclarative/src/qml/memory/qv4mm_p.h:268
      #12 0x00007ffff6da4cde in QV4::MemoryManager::allocate<QV4::QQmlTypeWrapper, QV4::Heap::QQmlTypeWrapper::TypeNameMode&, QObject*&, QQmlTypePrivate const*>(QV4::Heap::QQmlTypeWrapper::TypeNameMode&, QObject*&, QQmlTypePrivate const*&&) (this=<optimized out>)
          at /home/qydw/kde/src/qtdeclarative/src/qml/memory/qv4mm_p.h:301
      #13 0x00007ffff6da3c60 in QV4::QQmlTypeWrapper::create(QV4::ExecutionEngine*, QObject*, QQmlType const&, QV4::Heap::QQmlTypeWrapper::TypeNameMode)
          (engine=<optimized out>, o=<optimized out>, 
          o@entry=0x28e0cb0, t=..., mode=<optimized out>)
          at /home/qydw/kde/src/qtdeclarative/src/qml/qml/qqmltypewrapper.cpp:148
      #14 0x00007ffff6da48ae in QV4::QQmlTypeWrapper::virtualGet(QV4::Managed const*, QV4::PropertyKey, QV4::Value const*, bool*)
          (m=m@entry=0x7fffd89bf5b8, id=..., receiver=receiver@entry=0x7fffd89bf5b8, hasProperty=hasProperty@entry=0x0)
          at /home/qydw/kde/src/qtdeclarative/src/qml/qml/qqmltypewrapper_p.h:67
      #15 0x00007ffff6b7a779 in QV4::Object::get(QV4::StringOrSymbol*, bool*, QV4::Value const*) const
          (this=this@entry=0x7fffd89bf5b8, name=name@entry=0x7fffd89bf5c0, hasProperty=hasProperty@entry=0x0, receiver=0x7fffd89bf5b8, receiver@entry=0x0)
          at /home/qydw/kde/src/qtdeclarative/src/qml/jsruntime/qv4object_p.h:271
      #16 0x00007ffff6bec81d in QV4::Lookup::getterFallback(QV4::Lookup*, QV4::ExecutionEngine*, QV4::Value const&)
          (l=0x91d6b0, engine=<optimized out>, object=<optimized out>)
          at /home/qydw/kde/src/qtdeclarative/src/qml/jsruntime/qv4lookup.cpp:204
      #17 0x00007ffff6c35737 in QV4::Runtime::GetLookup::call(QV4::ExecutionEngine*, QV4::Function*, QV4::Value const&, int)
          (engine=0x6772d0, f=<optimized out>, base=..., index=<optimized out>)
          at /home/qydw/kde/src/qtdeclarative/src/qml/jsruntime/qv4runtime.cpp:1150
      #18 0x00007fffe3e26173 in  ()
      #19 0x0000000000000000 in  () 

      When QML_DISABLE_DISK_CACHE=1 is set, there are some warnings:

      > QML_DISABLE_DISK_CACHE=1 systemsettings
      qt.core.qobject.connect: QObject::connect: Connecting from COMPAT signal (QSocketNotifier::activated(int))
      qrc:/qt/qml/org/kde/systemsettings/CategoryItem.qml:33:13: Unable to assign IconPropertiesGroup_QMLTYPE_81 to IconPropertiesGroup_QMLTYPE_81
      qrc:/qt/qml/org/kde/systemsettings/CategoryItem.qml:33:13: Unable to assign IconPropertiesGroup_QMLTYPE_81 to IconPropertiesGroup_QMLTYPE_81
      qrc:/qt/qml/org/kde/systemsettings/CategoryItem.qml:33:13: Unable to assign IconPropertiesGroup_QMLTYPE_81 to IconPropertiesGroup_QMLTYPE_81
      qml: Page SubCategoryPage_QMLTYPE_98(0x1dfd410) is already in the PageRow
      qml: Pushed pages do not conform to the rules. Please check the documentation.
      qml: push (file:///home/qydw/kde/usr/qml/org/kde/kirigami/PageRow.qml:223)
      onActiveSubCategoryRowChanged (qrc:/qt/qml/org/kde/systemsettings/SubCategoryPage.qml:175)
      qrc:/qt/qml/org/kde/systemsettings/CategoryItem.qml:33:13: Unable to assign IconPropertiesGroup_QMLTYPE_81 to IconPropertiesGroup_QMLTYPE_81
      qrc:/qt/qml/org/kde/systemsettings/CategoryItem.qml:33:13: Unable to assign IconPropertiesGroup_QMLTYPE_81 to IconPropertiesGroup_QMLTYPE_81
      qrc:/qt/qml/org/kde/systemsettings/CategoryItem.qml:33:13: Unable to assign IconPropertiesGroup_QMLTYPE_81 to IconPropertiesGroup_QMLTYPE_81
      qrc:/qt/qml/org/kde/systemsettings/CategoryItem.qml:33:13: Unable to assign IconPropertiesGroup_QMLTYPE_81 to IconPropertiesGroup_QMLTYPE_81
      qrc:/qt/qml/org/kde/systemsettings/CategoryItem.qml:33:13: Unable to assign IconPropertiesGroup_QMLTYPE_81 to IconPropertiesGroup_QMLTYPE_81
      qrc:/qt/qml/org/kde/systemsettings/CategoryItem.qml:33:13: Unable to assign IconPropertiesGroup_QMLTYPE_81 to IconPropertiesGroup_QMLTYPE_81
      

      Attachments

        Issue Links

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

          Activity

            People

              qtqmlteam Qt Qml Team User
              fusionfuture Yuanzheng Wang
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes