Details
-
Bug
-
Resolution: Fixed
-
P1: Critical
-
None
-
QDS 3.8, QDS 3.9
-
None
Description
When trying to launch QQEffectMaker.exe it does not open but crashes right away. This happens if I try to launch it by double clicking .qep file in DS or just running it from DS_install_folder\Tools\QtDesignStudio\qt6_design_studio_reduced_version\bin
- output
Exception thrown: read access violation. **typeRef** was nullptr.
- qqmlpropertycachecreator_p.h
345template <typename ObjectContainer> 346inline QQmlPropertyCache::ConstPtr QQmlPropertyCacheCreator<ObjectContainer>::propertyCacheForObject(const CompiledObject *obj, const QQmlBindingInstantiationContext 347&context, QQmlError *error) const 348{ 349 if (context.instantiatingProperty) { 350 return context.instantiatingPropertyCache(); 351 } else if (obj->inheritedTypeNameIndex != 0) { 352 auto *typeRef = objectContainer->resolvedType(obj->inheritedTypeNameIndex); 353 Q_ASSERT(typeRef); 354 355 if (typeRef->isFullyDynamicType()) {
- trace
> Qt6Qml.dll!QQmlPropertyCacheCreator<QQmlTypeCompiler>::propertyCacheForObject(const QmlIR::Object * obj, const QQmlBindingInstantiationContext & context, QQmlError * error) Line 355 C++ Qt6Qml.dll!QQmlPropertyCacheCreator<QQmlTypeCompiler>::buildMetaObjectRecursively(int objectIndex, const QQmlBindingInstantiationContext & context, QQmlPropertyCacheCreator<QQmlTypeCompiler>::VMEMetaObjectIsRequired isVMERequired) Line 296 C++ [Inline Frame] Qt6Qml.dll!QQmlPropertyCacheCreator<QQmlTypeCompiler>::buildMetaObjectsIncrementally() Line 222 C++ Qt6Qml.dll!QQmlTypeCompiler::compile() Line 58 C++ Qt6Qml.dll!QQmlTypeData::compile(const QQmlRefPointer<QQmlTypeNameCache> & typeNameCache, QV4::ResolvedTypeReferenceMap * resolvedTypeCache, const std::function<QByteArray __cdecl(void)> & dependencyHasher) Line 750 C++ Qt6Qml.dll!QQmlTypeData::done() Line 410 C++ Qt6Qml.dll!QQmlDataBlob::tryDone() Line 488 C++ Qt6Qml.dll!QQmlTypeLoader::setData(QQmlDataBlob * blob, const QQmlDataBlob::SourceCodeData & d) Line 420 C++ Qt6Qml.dll!QQmlTypeLoader::setData(QQmlDataBlob * blob, const QString & fileName) Line 399 C++ Qt6Qml.dll!QQmlTypeLoader::loadThread(QQmlDataBlob * blob) Line 263 C++ [Inline Frame] Qt6Qml.dll!PlainLoader::loadThread(QQmlTypeLoader *) Line 108 C++ [Inline Frame] Qt6Qml.dll!QQmlTypeLoader::doLoad(const PlainLoader &) Line 167 C++ Qt6Qml.dll!QQmlTypeLoader::load(QQmlDataBlob * blob, QQmlTypeLoader::Mode mode) Line 199 C++ Qt6Qml.dll!QQmlTypeLoader::getType(const QUrl & unNormalizedUrl, QQmlTypeLoader::Mode mode) Line 916 C++ Qt6Qml.dll!QQmlTypeData::resolveTypes() Line 845 C++ Qt6Qml.dll!QQmlTypeData::allDependenciesDone() Line 721 C++ Qt6Qml.dll!QQmlTypeLoader::setData(QQmlDataBlob * blob, const QQmlDataBlob::SourceCodeData & d) Line 414 C++ Qt6Qml.dll!QQmlTypeLoader::setData(QQmlDataBlob * blob, const QString & fileName) Line 399 C++ Qt6Qml.dll!QQmlTypeLoader::loadThread(QQmlDataBlob * blob) Line 263 C++ [Inline Frame] Qt6Qml.dll!PlainLoader::loadThread(QQmlTypeLoader *) Line 108 C++
- when attaching a debugger you will see these locals
this->typeClassName = "BlurItem" objectContainer->document= // Copyright (C) 2022 The Qt Company Ltd. // SPDX-License-Identifier: BSD-3-Clause import QtQuick Item { id: rootItem property var sourceProxy: source.sourceItem === undefined ? source : source.sourceItem property alias blurSrc1: blurredItemSource1 property alias blurSrc2: blurredItemSource2 property alias blurSrc3: blurredItemSource3 property alias blurSrc4: blurredItemSource4 property alias blurSrc5: blurredItemSource5 property alias blurSrc6: blurredItemSource6 component BlurItem : ShaderEffect { property vector2d offset: Qt.vector2d((1.0 + rootItem.blurMultiplier) / width, (1.0 + rootItem.blurMultiplier) / height) visible: false smooth: true vertexShader: "bluritems.vert.qsb" fragmentShader: "bluritems.frag.qsb" } QtObject { id: priv property bool useBlurItem1: true property bool useBlurItem2: true property bool useBlurItem3: rootItem.blurMax > 2 property bool useBlurItem4: rootItem.blurMax > 8 property bool useBlurItem5: rootItem.blurMax > 16 property bool useBlurItem6: rootItem.blurMax > 32 } ShaderEffectSource { id: blurredItemSource1 width: Math.ceil(rootItem.width / 64) * 64 height: Math.ceil(rootItem.height / 64) * 64 sourceItem: priv.useBlurItem1 ? rootItem.sourceProxy : null hideSource: rootItem.visible visible: false smooth: true } BlurItem { id: blurredItem1 property var source: blurredItemSource1 anchors.fill: blurredItemSource2 } ShaderEffectSource { id: blurredItemSource2 width: blurredItemSource1.width / 2 height: blurredItemSource1.height / 2 sourceItem: priv.useBlurItem2 ? blurredItem1 : null hideSource: rootItem.visible visible: false smooth: true } BlurItem { id: blurredItem2 property var source: blurredItemSource2 anchors.fill: blurredItemSource3 } ShaderEffectSource { id: blurredItemSource3 width: blurredItemSource2.width / 2 height: blurredItemSource2.height / 2 sourceItem: priv.useBlurItem3 ? blurredItem2 : null hideSource: rootItem.visible visible: false smooth: true } BlurItem { id: blurredItem3 property var source: blurredItemSource3 anchors.fill: blurredItemSource4 } ShaderEffectSource { id: blurredItemSource4 width: blurredItemSource3.width / 2 height: blurredItemSource3.height / 2 sourceItem: priv.useBlurItem4 ? blurredItem3 : null hideSource: rootItem.visible visible: false smooth: true } BlurItem { id: blurredItem4 property var source: blurredItemSource4 anchors.fill: blurredItemSource5 } ShaderEffectSource { id: blurredItemSource5 width: blurredItemSource4.width / 2 height: blurredItemSource4.height / 2 sourceItem: priv.useBlurItem5 ? blurredItem4 : null hideSource: rootItem.visible visible: false smooth: true } BlurItem { id: blurredItem5 property var source: blurredItemSource5 anchors.fill: blurredItemSource6 } ShaderEffectSource { id: blurredItemSource6 width: blurredItemSource5.width / 2 height: blurredItemSource5.height / 2 sourceItem: priv.useBlurItem6 ? blurredItem5 : null hideSource: rootItem.visible visible: false smooth: true } }