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

crash on qml cache checksum mismatch

    XMLWordPrintable

Details

    • Linux/Wayland, Linux/X11
    • 43ba05526 (dev), c512c6ac0 (6.9), 21299aa4c (tqtc/lts-6.8), 501fb5b49 (tqtc/lts-6.5)

    Description

      Downstream report: https://bugs.kde.org/show_bug.cgi?id=463648

       

      For unknown reasons a checksum mismatch in a cache file can lead to a subsequent crash. This appears across different programs and Qt versions.

      What seems of note is that the guards in

       

      Unit::verifyHeader

      do not bite, it's only the checksum test in

       

      QQmlTypeData::done 

      that fails.

      I have a VM which is reproducibly broken.

       

       

      I am attaching a sample bad file as well as a sample good file (created after removing the bad file).

      The produced debug message prior to the crash is: 
      qt.qml.diskcache: Checksum mismatch for cached version of "file:///usr/share/plasma/plasmoids/org.kde.plasma.bluetooth/contents/ui/Toolbar.qml"
      (It may actually make sense to promote that to a warning btw )

      The backtrace I can reproduce is:

      #0 QQmlPropertyCacheCreator<QQmlTypeCompiler>::buildMetaObjectRecursively (this=this@entry=0x7fff5d7f86d0, objectIndex=1, context=...,
      isVMERequired=isVMERequired@entry=QQmlPropertyCacheCreator<QQmlTypeCompiler>::VMEMetaObjectIsRequired::Maybe)
      at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmlpropertycachecreator_p.h:377
      #1 0x00007ffff63a6873 in QQmlPropertyCacheCreator<QQmlTypeCompiler>::buildMetaObjectRecursively (this=0x7fff5d7f86d0, objectIndex=0, context=..., isVMERequired=<optimized out>)
      at /usr/include/qt6/QtCore/qendian.h:258
      #2 0x00007ffff639e2ba in QQmlPropertyCacheCreator<QQmlTypeCompiler>::buildMetaObjectsIncrementally (this=0x7fff5d7f86d0)
      at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmlpropertycachecreator_p.h:321
      #3 QQmlTypeCompiler::compile (this=0x7fff5d7f8980) at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypecompiler.cpp:63
      #4 0x00007ffff63b74d0 in QQmlTypeData::compile (this=0x7fff44ba5990, typeNameCache=..., resolvedTypeCache=0x7fff5d7f88b8, dependencyHasher=...)
      at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypedata.cpp:886
      #5 QQmlTypeData::done (this=<optimized out>) at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypedata.cpp:544
      #6 0x00007ffff62ed61b in QQmlDataBlob::tryDone (this=0x7fff44ba5990) at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmldatablob.cpp:512
      #7 QQmlDataBlob::tryDone (this=0x7fff44ba5990) at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmldatablob.cpp:502
      #8 0x00007ffff63c4d00 in QQmlTypeLoader::setData (this=this@entry=0x555557742d30, blob=..., d=...)
      at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypeloader.cpp:442
      #9 0x00007ffff63c5ace in QQmlTypeLoader::setData (this=0x555557742d30, blob=..., fileName=...)
      at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypeloader.cpp:420
      #10 0x00007ffff63be91d in QQmlTypeLoader::loadThread (this=0x555557742d30, blob=...) at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypeloader.cpp:278
      #11 0x00007ffff63bee45 in PlainLoader::loadThread (this=<optimized out>, loader=0x555557742d30, blob=...) at /usr/include/qt6/QtCore/qmutex.h:58
      #12 QQmlTypeLoader::doLoad<PlainLoader> (loader=..., this=0x555557742d30, blob=..., mode=QQmlTypeLoader::PreferSynchronous)
      at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypeloader.cpp:172
      #13 QQmlTypeLoader::load (this=0x555557742d30, blob=..., mode=QQmlTypeLoader::PreferSynchronous)
      at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypeloader.cpp:203
      #14 0x00007ffff63cd92e in QQmlTypeLoader::getType (this=<optimized out>, unNormalizedUrl=..., mode=<optimized out>)
      at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypeloader.cpp:1060
      #15 0x00007ffff63b603c in QQmlTypeData::resolveTypes (this=0x7fff44b996b0) at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypedata.cpp:996
      #16 QQmlTypeData::allDependenciesDone (this=0x7fff44b996b0) at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypedata.cpp:847
      #17 0x00007ffff63c4e9b in QQmlTypeLoader::setData (this=this@entry=0x555557742d30, blob=..., d=...)
      at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/ftw/qqmlrefcount_p.h:73
      #18 0x00007ffff63c5ace in QQmlTypeLoader::setData (this=0x555557742d30, blob=..., fileName=...)
      at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypeloader.cpp:420
      #19 0x00007ffff63be91d in QQmlTypeLoader::loadThread (this=0x555557742d30, blob=...) at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypeloader.cpp:278
      #20 0x00007ffff63bee45 in PlainLoader::loadThread (this=<optimized out>, loader=0x555557742d30, blob=...) at /usr/include/qt6/QtCore/qmutex.h:58
      #21 QQmlTypeLoader::doLoad<PlainLoader> (loader=..., this=0x555557742d30, blob=..., mode=QQmlTypeLoader::PreferSynchronous)
      at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypeloader.cpp:172
      #22 QQmlTypeLoader::load (this=0x555557742d30, blob=..., mode=QQmlTypeLoader::PreferSynchronous)
      at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypeloader.cpp:203
      #23 0x00007ffff63cd92e in QQmlTypeLoader::getType (this=<optimized out>, unNormalizedUrl=..., mode=<optimized out>)
      at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypeloader.cpp:1060
      #24 0x00007ffff63b603c in QQmlTypeData::resolveTypes (this=0x555557d366a0) at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypedata.cpp:996
      #25 QQmlTypeData::allDependenciesDone (this=0x555557d366a0) at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypedata.cpp:847
      #26 0x00007ffff63c4e9b in QQmlTypeLoader::setData (this=this@entry=0x555557742d30, blob=..., d=...)
      at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/ftw/qqmlrefcount_p.h:73
      #27 0x00007ffff63c5ace in QQmlTypeLoader::setData (this=0x555557742d30, blob=..., fileName=...)
      at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypeloader.cpp:420
      #28 0x00007ffff63be91d in QQmlTypeLoader::loadThread (this=0x555557742d30, blob=...) at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/qqmltypeloader.cpp:278
      #29 0x00007ffff63ce6e9 in QQmlThread::createMessageFromMethod<void (QQmlTypeLoaderThread::)(QQmlRefPointer<QQmlDataBlob> const&), QQmlRefPointer<QQmlDataBlob> const&>(void (QQmlTypeLoaderThread::&&)(QQmlRefPointer<QQmlDataBlob> const&), QQmlRefPointer<QQmlDataBlob> const&)::I::call(QQmlThread*) () at /usr/include/c++/14/bits/invoke.h:71
      #30 0x00007ffff64471bd in QQmlThreadPrivate::threadEvent (this=0x5555592bd740) at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/ftw/qqmlthread_impl.cpp:144
      #31 QQmlThreadPrivate::event (this=0x5555592bd740, e=0x55555ab1d690) at /usr/src/debug/qtdeclarative-everywhere-src-6.9.0/src/qml/qml/ftw/qqmlthread_impl.cpp:101
      #32 0x00007ffff71e142a in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5555592bd740, e=0x55555ab1d690)
      at /usr/src/debug/qtbase-everywhere-src-6.9.0/src/widgets/kernel/qapplication.cpp:3301
      #33 0x00007ffff4db75e8 in QCoreApplication::notifyInternal2 (receiver=0x5555592bd740, event=0x55555ab1d690)
      at /usr/src/debug/qtbase-everywhere-src-6.9.0/src/corelib/kernel/qcoreapplication.cpp:1106
      #34 0x00007ffff4db762d in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>)
      at /usr/src/debug/qtbase-everywhere-src-6.9.0/src/corelib/kernel/qcoreapplication.cpp:1546
      #35 0x00007ffff4db79a7 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x555557a95390)
      at /usr/src/debug/qtbase-everywhere-src-6.9.0/src/corelib/kernel/qcoreapplication.cpp:1879
      #36 0x00007ffff501c047 in postEventSourceDispatch (s=s@entry=0x7fff44000f20) at /usr/src/debug/qtbase-everywhere-src-6.9.0/src/corelib/kernel/qeventdispatcher_glib.cpp:246
      #37 0x00007ffff3886678 in g_main_dispatch (context=0x7fff44000c60) at ../glib/gmain.c:3398
      #38 g_main_context_dispatch_unlocked (context=context@entry=0x7fff44000c60) at ../glib/gmain.c:4249
      #39 0x00007ffff38883d8 in g_main_context_iterate_unlocked (context=context@entry=0x7fff44000c60, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
      at ../glib/gmain.c:4314
      #40 0x00007ffff3888bec in g_main_context_iteration (context=0x7fff44000c60, may_block=1) at ../glib/gmain.c:4379
      #41 0x00007ffff501a013 in QEventDispatcherGlib::processEvents (this=0x7fff44000b70, flags=...)
      at /usr/src/debug/qtbase-everywhere-src-6.9.0/src/corelib/kernel/qeventdispatcher_glib.cpp:399
      #42 0x00007ffff4dc24db in QEventLoop::exec (this=0x7fff5d7f9a20, flags=...) at /usr/src/debug/qtbase-everywhere-src-6.9.0/src/corelib/global/qflags.h:77
      #43 0x00007ffff4eafbdc in QThread::exec (this=<optimized out>) at /usr/src/debug/qtbase-everywhere-src-6.9.0/src/corelib/global/qflags.h:77
      #44 0x00007ffff4f2c22a in operator() (__closure=<optimized out>) at /usr/src/debug/qtbase-everywhere-src-6.9.0/src/corelib/thread/qthread_unix.cpp:433
      #45 (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=...)
      at /usr/src/debug/qtbase-everywhere-src-6.9.0/src/corelib/thread/qthread_unix.cpp:365
      #46 QThreadPrivate::start (arg=0x5555592bd740) at /usr/src/debug/qtbase-everywhere-src-6.9.0/src/corelib/thread/qthread_unix.cpp:393
      #47 0x00007ffff4499546 in start_thread (arg=<optimized out>) at pthread_create.c:448
      #48 0x00007ffff451d94c in _GI__clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

      Attachments

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

        Activity

          People

            ulherman Ulf Hermann
            apachelogger Harald Sitter
            Votes:
            3 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: