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

Crash on QQuickMultiEffectPrivate::updateEffectShaders() with nullptr access

    XMLWordPrintable

Details

    • macOS, Windows
    • 0bdb7b2a4 (dev), cfdf76be4 (6.6), bc3d82d4a (6.5)

    Description

      I started notice such crashes in our users crash reports since we migrated effects from Qt5Compat GraphicalEffects to MultiEffect.
      It doesn't reproduces for us locally, so I have no any simple reproducer for this at the moment.

      There are crashes both on Windows and macOS.

      Call stack:

       	Qt6Quick.dll!QQuickShaderEffect::setFragmentShader(const QUrl & fileUrl) Line 564	C++
      >	Qt6QuickEffects.dll!QQuickMultiEffectPrivate::updateEffectShaders() Line 1621	C++
       	[Inline Frame] Qt6QuickEffects.dll!QQuickMultiEffectPrivate::setBlurMax(int) Line 1087	C++
       	Qt6QuickEffects.dll!QQuickMultiEffect::setBlurMax(int blurMax) Line 432	C++
       	Qt6Qml.dll!QQmlPropertyData::writeProperty(QObject * target, void * value, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 339	C++
       	[Inline Frame] Qt6Qml.dll!GenericBinding<2>::doStore(int value, const QQmlPropertyData *) Line 275	C++
       	Qt6Qml.dll!GenericBinding<2>::write(const QV4::Value & result, bool isUndefined, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 269	C++
       	[Inline Frame] Qt6Qml.dll!QQmlJavaScriptExpression::DeleteWatcher::wasDeleted() Line 235	C++
       	Qt6Qml.dll!QQmlBinding::doUpdate(const QQmlJavaScriptExpression::DeleteWatcher & watcher, QFlags<enum QQmlPropertyData::WriteFlag> flags, QV4::Scope & scope) Line 703	C++
       	Qt6Qml.dll!QQmlBinding::update(QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 166	C++
       	Qt6Qml.dll!QQmlNotifier::emitNotify(QQmlNotifierEndpoint * endpoint, void * * a) Line 71	C++
       	Qt6Qml.dll!QQmlData::signalEmitted(QAbstractDeclarativeData * __formal, QObject * object, int index, void * * a) Line 357	C++
       	Qt6Core.dll!doActivate<0>(QObject * sender, int signal_index, void * * argv) Line 3890	C++
       	Qt6Core.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 4053	C++
       	[Inline Frame] Qt6Quick.dll!QQuickImageBase::sourceSizeChanged() Line 607	C++
       	Qt6Quick.dll!QQuickImageBase::requestFinished() Line 380	C++
       	Qt6Quick.dll!QQuickImageBase::loadPixmap(const QUrl & url, QFlags<enum QQuickImageBase::LoadPixmapOption> loadOptions) Line 341	C++
       	Qt6Quick.dll!QQuickImageBase::componentComplete() Line 429	C++
       	Qt6Qml.dll!QQmlObjectCreator::finalize(QQmlInstantiationInterrupt & interrupt) Line 1487	C++
       	Qt6Qml.dll!QQmlIncubatorPrivate::incubate(QQmlInstantiationInterrupt & i) Line 346	C++
       	Qt6Qml.dll!QQmlEnginePrivate::incubate(QQmlIncubator & i, const QQmlRefPointer<QQmlContextData> & forContext) Line 55	C++
       	Qt6Qml.dll!QQmlComponent::create(QQmlIncubator & incubator, QQmlContext * context, QQmlContext * forContext) Line 1421	C++
       	Qt6Quick.dll!QQuickLoaderPrivate::_q_sourceLoaded() Line 743	C++
       	Qt6Quick.dll!QQuickLoader::loadFromSource() Line 410	C++
       	[Inline Frame] Qt6Quick.dll!QQuickLoader::setSource(const QUrl &) Line 389	C++
       	Qt6Quick.dll!QQuickLoader::setSourceWithoutResolve(const QUrl & url) Line 373	C++
       	Qt6Qml.dll!QQmlPropertyData::writeProperty(QObject * target, void * value, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 339	C++
       	Qt6Qml.dll!QQmlPropertyPrivate::write(QObject * object, const QQmlPropertyData & property, const QVariant & value, const QQmlRefPointer<QQmlContextData> & context, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 1543	C++
       	Qt6Qml.dll!QQmlPropertyPrivate::writeValueProperty(QObject * object, const QQmlPropertyData & core, const QQmlPropertyData & valueTypeData, const QVariant & value, const QQmlRefPointer<QQmlContextData> & context, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 1313	C++
       	Qt6Qml.dll!QQmlBinding::slowWrite(const QQmlPropertyData & core, const QQmlPropertyData & valueTypeData, const QV4::Value & result, bool isUndefined, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 540	C++
       	Qt6Qml.dll!GenericBinding<0>::write(const QV4::Value & result, bool isUndefined, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 269	C++
       	[Inline Frame] Qt6Qml.dll!QQmlJavaScriptExpression::DeleteWatcher::wasDeleted() Line 235	C++
       	Qt6Qml.dll!QQmlBinding::doUpdate(const QQmlJavaScriptExpression::DeleteWatcher & watcher, QFlags<enum QQmlPropertyData::WriteFlag> flags, QV4::Scope & scope) Line 703	C++
       	Qt6Qml.dll!QQmlBinding::update(QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 166	C++
       	Qt6Qml.dll!QQmlNotifier::emitNotify(QQmlNotifierEndpoint * endpoint, void * * a) Line 71	C++
       	Qt6Qml.dll!QQmlData::signalEmitted(QAbstractDeclarativeData * __formal, QObject * object, int index, void * * a) Line 357	C++
       	Qt6Core.dll!doActivate<0>(QObject * sender, int signal_index, void * * argv) Line 3890	C++
       	Qt6Core.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 4053	C++
      ...
      

       

      Crashed in QQuickMultiEffectPrivate::updateEffectShaders() on m_shaderEffect->setFragmentShader(fs)

      Pay attention that m_shaderEffect is nullptr at the moment.

      Attachments

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

        Activity

          People

            kagro Kaj Grönholm
            studiosus Vladimir Belyavsky
            Votes:
            2 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes