Details
-
Bug
-
Resolution: Fixed
-
P1: Critical
-
6.5.10, 6.8.4, 6.8, 6.9.2, 6.10.0 Beta3
-
6.8.2, 6.9.0
-
None
-
-
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 |
647615,1 | QtQml: Guard inheritedTypeNameIndex typeRefs against null | dev | qt/qtdeclarative | Status: ABANDONED | 0 | 0 |
647623,5 | QtQml: Re-run complete compilation pipeline on checksum mismatch | dev | qt/qtdeclarative | Status: MERGED | +2 | +1 |
648256,2 | QtQml: Re-run complete compilation pipeline on checksum mismatch | 6.9 | qt/qtdeclarative | Status: MERGED | +2 | 0 |
648296,3 | QtQml: Re-run complete compilation pipeline on checksum mismatch | tqtc/lts-6.8 | qt/tqtc-qtdeclarative | Status: MERGED | +2 | 0 |
648574,5 | QtQml: Re-run complete compilation pipeline on checksum mismatch | tqtc/lts-6.5 | qt/tqtc-qtdeclarative | Status: MERGED | +2 | +1 |