Details
-
Bug
-
Resolution: Fixed
-
P1: Critical
-
6.5, 6.8
-
None
-
84835c51f (dev), d48d4d978 (dev), 7b239f4de (6.8), 48e30b628 (6.8)
Description
The attached example creates an inline component "Button" in a file called MyComponents.qml. This component derives from QQuickButton. When it's instantiated from Main.qml, it causes the application to hit an assert:
ASSERT: "_size < _alloc" in file qtdeclarative/src/qml/qml/ftw/qfinitestack_p.h, line 79
The stack trace indicates that this has to do with the "background" delegate of a QQuickControl being deferred until QQuickControl::componentComplete().
frame #7: 0x000000010b00fc30 QtCore`qt_assert(assertion="_size < _alloc", file="/Users/richard/dev/qt/source/dev/qtdeclarative/src/qml/qml/ftw/qfinitestack_p.h", line=79) at qassert.cpp:105:14 frame #8: 0x00000001054af1c4 QtQml`QFiniteStack<QQmlParserStatus*>::push(this=0x0000600001b328a8, o=0x000000016fdfcc18) at qfinitestack_p.h:79:5 frame #9: 0x00000001054a520c QtQml`QQmlObjectCreator::createInstance(this=0x000000014b645070, index=2, parent=0x0000600001730c40, isContextObject=false) at qqmlobjectcreator.cpp:1422:47 frame #10: 0x00000001054aa93c QtQml`QQmlObjectCreator::setPropertyBinding(this=0x000000014b645070, bindingProperty=0x0000600001c30e40, binding=0x000000014c815c8c) at qqmlobjectcreator.cpp:886:28 frame #11: 0x00000001054ce118 QtQml`QQmlObjectCreator::populateDeferred(QObject*, int, QQmlPropertyPrivate const*, QV4::CompiledData::Binding const*)::$_0::operator()(this=0x000000016fdfddf0) const at qqmlobjectcreator.cpp:266:9 frame #12: 0x00000001054a5d68 QtQml`void QQmlObjectCreator::doPopulateDeferred<QQmlObjectCreator::populateDeferred(QObject*, int, QQmlPropertyPrivate const*, QV4::CompiledData::Binding const*)::$_0>(this=0x000000014b645070, instance=0x0000000000000000, deferredIndex=1, f=(unnamed class) @ 0x000000016fdfddf0) at qqmlobjectcreator_p.h:306:9 frame #13: 0x00000001054a5a94 QtQml`QQmlObjectCreator::populateDeferred(this=0x000000014b645070, instance=0x0000600001730c40, deferredIndex=1, qmlProperty=0x0000600001c30e10, binding=0x000000014c815c8c) at qqmlobjectcreator.cpp:250:5 frame #14: 0x00000001054a62e4 QtQml`QQmlObjectCreator::populateDeferredBinding(this=0x000000014b645070, qmlProperty=0x000000016fdfe198, deferredIndex=1, binding=0x000000014c815c8c) at qqmlobjectcreator.cpp:290:9 frame #15: 0x0000000113621a4c QtQuickTemplates2`QtQuickPrivate::beginDeferred(enginePriv=0x000000014c8070d0, property=0x000000016fdfe198, deferredState=0x000000016fdfe1a0 size=0) at qquickdeferredexecute.cpp:93:30 frame #16: 0x00000001136213c8 QtQuickTemplates2`QtQuickPrivate::beginDeferred(object=0x0000600001730c40, property=0x000000016fdfe270, delegate=0x000000014b643278, isOwnState=true) at qquickdeferredexecute.cpp:116:13 frame #17: 0x00000001135c98ec QtQuickTemplates2`void quickBeginDeferred<QQuickItem>(object=0x0000600001730c40, property=0x000000016fdfe270, delegate=0x000000014b643278) at qquickdeferredexecute_p_p.h:41:5 frame #18: 0x000000011361907c QtQuickTemplates2`QQuickControlPrivate::executeBackground(this=0x000000014b643080, complete=true) at qquickcontrol.cpp:750:9 frame #19: 0x000000011361bfbc QtQuickTemplates2`QQuickControl::componentComplete(this=0x0000600001730c40) at qquickcontrol.cpp:1950:8 frame #20: 0x00000001135ccf48 QtQuickTemplates2`QQuickAbstractButton::componentComplete(this=0x0000600001730c40) at qquickabstractbutton.cpp:1152:20
Attachments
For Gerrit Dashboard: QTBUG-131442 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
610408,1 | Move inlineComponentName from CU to ObjectCreator | tqtc/lts-6.5 | qt/tqtc-qtdeclarative | Status: NEW | 0 | 0 |
610409,1 | Verify fixed interaction between inline components and deferred bindings | tqtc/lts-6.5 | qt/tqtc-qtdeclarative | Status: NEW | +2 | 0 |