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

Crash in QQmlPropertyCacheAliasCreator<QV4::ExecutableCompilationUnit>::propertyDataForAlias ¿QML disk cache?

    XMLWordPrintable

Details

    Description

      Note: Doesn't crash neither with Qt 6.4.2 nor with 6.6.0-beta4

       

      I've tried both macos and linux and crashes on both.

       

      The attached code crashes when run twice with the qml tool (doesn't crash if QML_DISABLE_DISK_CACHE=1 )

       

      Backtrace:

       

      • thread #6, name = 'QQmlThread', stop reason = EXC_BAD_ACCESS (code=1, address=0x10)
          * frame #0: 0x0000000100c447f0 QtQml`QQmlPropertyCacheAliasCreator<QV4::ExecutableCompilationUnit>::propertyDataForAlias(QV4::CompiledData::Object const&, QV4::CompiledData::Alias const&, QMetaType*, QTypeRevision*, QQmlPropertyData::Flags*, QQmlEnginePrivate*) [inlined] QQmlPropertyData::propType(this=0x0000000000000000) const at qqmlpropertydata_p.h:222:41 [opt]
            frame #1: 0x0000000100c447f0 QtQml`QQmlPropertyCacheAliasCreator<QV4::ExecutableCompilationUnit>::propertyDataForAlias(this=<unavailable>, component=<unavailable>, alias=0x00000001029f064c, type=0x0000000170836568, version=<unavailable>, propertyFlags=0x0000000170836560, enginePriv=0x0000000100516b20) at qqmlpropertycachecreator_p.h:841:56 [opt]
            frame #2: 0x0000000100c4419c QtQml`QQmlPropertyCacheAliasCreator<QV4::ExecutableCompilationUnit>::appendAliasesToPropertyCache(this=0x00000001708365f0, component=0x00000001029f05f8, objectIndex=<unavailable>, enginePriv=0x0000000100516b20) at qqmlpropertycachecreator_p.h:915:27 [opt]
            frame #3: 0x0000000100c43e04 QtQml`QQmlComponentAndAliasResolver<QV4::ExecutableCompilationUnit>::resolveAliases(this=0x0000000170836758, componentIndex=<unavailable>) at qqmlcomponentandaliasresolver_p.h:389:53 [opt]
            frame #4: 0x0000000100c37648 QtQml`QQmlComponentAndAliasResolver<QV4::ExecutableCompilationUnit>::resolve(this=0x0000000170836758, root=0) at qqmlcomponentandaliasresolver_p.h:327:12 [opt]
            frame #5: 0x0000000100c3644c QtQml`QQmlTypeData::createTypeAndPropertyCaches(this=0x000000010065cd00, typeNameCache=<unavailable>, resolvedTypeCache=<unavailable>) at qqmltypedata.cpp:253:54 [opt]
            frame #6: 0x0000000100c383ec QtQml`QQmlTypeData::done(this=<unavailable>) at qqmltypedata.cpp:447:33 [opt]
            frame #7: 0x0000000100b792f0 QtQml`QQmlDataBlob::tryDone(this=0x000000010065cd00) at qqmldatablob.cpp:485:9 [opt]
            frame #8: 0x0000000100c49a0c QtQml`QQmlTypeLoader::setData(this=<unavailable>, blob=0x0000000170836c08, d=0x0000000170836b18) at qqmltypeloader.cpp:415:11 [opt]
            frame #9: 0x0000000100c49278 QtQml`QQmlTypeLoader::setData(this=<unavailable>, blob=<unavailable>, fileName=<unavailable>) at qqmltypeloader.cpp:395:5 [opt]
            frame #10: 0x0000000100c490b4 QtQml`QQmlTypeLoader::loadThread(this=0x0000000100516ce0, blob=0x0000000170836c08) at qqmltypeloader.cpp:260:9 [opt]
            frame #11: 0x0000000100c57b58 QtQml`QQmlThread::Message* QQmlThread::createMessageFromMethod<void (QQmlTypeLoaderThread::)(QQmlRefPointer<QQmlDataBlob> const&), QQmlRefPointer<QQmlDataBlob> const&>(void (QQmlTypeLoaderThread::&&)(QQmlRefPointer<QQmlDataBlob> const&), QQmlRefPointer<QQmlDataBlob> const&)::I::call(QQmlThread*) [inlined] decltype(static_cast<QQmlTypeLoaderThread>(fp0).fp(static_cast<QQmlRefPointer<QQmlDataBlob>>(fp1))) std::_1::invoke_constexpr<void (QQmlTypeLoaderThread::&)(QQmlRefPointer<QQmlDataBlob> const&), QQmlTypeLoaderThread*, QQmlRefPointer<QQmlDataBlob>, void>(_f=<unavailable>, __a0=0x0000000170836c00, __args=<unavailable>) at type_traits:3866:1 [opt]
            frame #12: 0x0000000100c57b54 QtQml`QQmlThread::Message* QQmlThread::createMessageFromMethod<void (QQmlTypeLoaderThread::)(QQmlRefPointer<QQmlDataBlob> const&), QQmlRefPointer<QQmlDataBlob> const&>(void (QQmlTypeLoaderThread::&&)(QQmlRefPointer<QQmlDataBlob> const&), QQmlRefPointer<QQmlDataBlob> const&)::I::call(QQmlThread*) [inlined] decltype(auto) std::_1::apply_tuple_impl<void (QQmlTypeLoaderThread::&)(QQmlRefPointer<QQmlDataBlob> const&), std::1::tuple<QQmlTypeLoaderThread, QQmlRefPointer<QQmlDataBlob>>, 0ul, 1ul>(_f=<unavailable>, __t=size=2, (null)=<unavailable>) at tuple:1536:1 [opt]
            frame #13: 0x0000000100c57b34 QtQml`QQmlThread::Message* QQmlThread::createMessageFromMethod<void (QQmlTypeLoaderThread::)(QQmlRefPointer<QQmlDataBlob> const&), QQmlRefPointer<QQmlDataBlob> const&>(void (QQmlTypeLoaderThread::&&)(QQmlRefPointer<QQmlDataBlob> const&), QQmlRefPointer<QQmlDataBlob> const&)::I::call(QQmlThread*) [inlined] decltype(auto) std::_1::apply<void (QQmlTypeLoaderThread::&)(QQmlRefPointer<QQmlDataBlob> const&), std::1::tuple<QQmlTypeLoaderThread, QQmlRefPointer<QQmlDataBlob>>>(_f=<unavailable>, __t=size=2) at tuple:1545:1 [opt]
            frame #14: 0x0000000100c57b34 QtQml`QQmlThread::Message* QQmlThread::createMessageFromMethod<void (QQmlTypeLoaderThread::)(QQmlRefPointer<QQmlDataBlob> const&), QQmlRefPointer<QQmlDataBlob> const&>(void (QQmlTypeLoaderThread::&&)(QQmlRefPointer<QQmlDataBlob> const&), QQmlRefPointer<QQmlDataBlob> const&)::I::call(this=<unavailable>, thread=<unavailable>) at qqmlthread_p.h:106:13 [opt]
            frame #15: 0x0000000100b44cd0 QtQml`QQmlThreadPrivate::threadEvent(this=0x0000600002c28400) at qqmlthread.cpp:148:22 [opt]
            frame #16: 0x0000000100b44bf4 QtQml`QQmlThreadPrivate::event(this=0x0000600002c28400, e=0x000060000001c1d0) at qqmlthread.cpp:105:9 [opt]
            frame #17: 0x0000000102ad40d4 QtCore`QCoreApplicationPrivate::notify_helper(receiver=0x0000600002c28400, event=0x000060000001c1d0) at qcoreapplication.cpp:1285:26 [opt]
            frame #18: 0x0000000102ad3c54 QtCore`QCoreApplication::notifyInternal2(receiver=0x0000600002c28400, event=0x000060000001c1d0) at qcoreapplication.cpp:1118:18 [opt]
            frame #19: 0x0000000102ad4f04 QtCore`QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) [inlined] QCoreApplication::sendEvent(receiver=0x0000600002c28400, event=0x000060000001c1d0) at qcoreapplication.cpp:1536:12 [opt]
            frame #20: 0x0000000102ad4ef4 QtCore`QCoreApplicationPrivate::sendPostedEvents(receiver=<unavailable>, event_type=0, data=0x0000600003301400) at qcoreapplication.cpp:1898:9 [opt]
            frame #21: 0x0000000102c3eda4 QtCore`QEventDispatcherUNIX::processEvents(this=0x000060000001c120, flags=<unavailable>) at qeventdispatcher_unix.cpp:432:5 [opt]
            frame #22: 0x0000000102add5d4 QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) [inlined] QEventLoop::processEvents(this=0x0000000170836f20, flags=<unavailable>) at qeventloop.cpp:100:55 [opt]
            frame #23: 0x0000000102add5b0 QtCore`QEventLoop::exec(this=0x0000000170836f20, flags=<unavailable>) at qeventloop.cpp:182:9 [opt]
            frame #24: 0x0000000102bc6e3c QtCore`QThread::exec(this=<unavailable>) at qthread.cpp:578:32 [opt]
            frame #25: 0x0000000102c42f84 QtCore`QThreadPrivate::start(void*) [inlined] QThreadPrivate::start(void*)::$_0::operator()(this=<unavailable>) const at qthread_unix.cpp:321:14 [opt]
            frame #26: 0x0000000102c42e84 QtCore`QThreadPrivate::start(void*) [inlined] void (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::$_0>(t=<unavailable>) at qthread_unix.cpp:257:9 [opt]
            frame #27: 0x0000000102c42e84 QtCore`QThreadPrivate::start(arg=0x0000600002c28400) at qthread_unix.cpp:280:5 [opt]
            frame #28: 0x00000001a14cffa8 libsystem_pthread.dylib`_pthread_start + 148

      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
              albert.astals.cid.avid Albert Astals Cid
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes