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

Regression: crash when setting property through alias

    XMLWordPrintable

Details

    Description

      The code below results in an assertion failure with Qt 5.6, but not 5.5.1:

      import QtQuick 2.3
      import QtQuick.Window 2.2
      
      Window {
          visible: true
      
          Item {
              id: eye
      
              pupil.restingY: 20
      
              property alias pupil: pupil
      
              Item {
                  id: pupil
      
                  property int restingY
              }
          }
      }
      

      Short backtrace:

      1	__GI_raise	raise.c	55	0x7ffff6051267	
      2	__GI_abort	abort.c	89	0x7ffff6052eca	
      3	qt_message_fatal	qlogging.cpp	1610	0x7ffff6a2bff1	
      4	QMessageLogger::fatal	qlogging.cpp	784	0x7ffff6a2829a	
      5	qt_assert_x	qglobal.cpp	3002	0x7ffff6a20a91	
      6	QVector<QQmlPropertyData *>::at	qvector.h	419	0x7ffff73c178b	
      7	QQmlObjectCreator::setupBindings	qqmlobjectcreator.cpp	682	0x7ffff73bbba4	
      8	QQmlObjectCreator::populateInstance	qqmlobjectcreator.cpp	1318	0x7ffff73bfdc9	
      9	QQmlObjectCreator::setPropertyBinding	qqmlobjectcreator.cpp	780	0x7ffff73bc62c	
      10	QQmlObjectCreator::setupBindings	qqmlobjectcreator.cpp	695	0x7ffff73bbce8	
      11	QQmlObjectCreator::populateInstance	qqmlobjectcreator.cpp	1318	0x7ffff73bfdc9	
      12	QQmlObjectCreator::createInstance	qqmlobjectcreator.cpp	1165	0x7ffff73befe8	
      13	QQmlObjectCreator::setPropertyBinding	qqmlobjectcreator.cpp	741	0x7ffff73bc23f	
      14	QQmlObjectCreator::setupBindings	qqmlobjectcreator.cpp	695	0x7ffff73bbce8	
      15	QQmlObjectCreator::populateInstance	qqmlobjectcreator.cpp	1318	0x7ffff73bfdc9	
      16	QQmlObjectCreator::createInstance	qqmlobjectcreator.cpp	1165	0x7ffff73befe8	
      17	QQmlObjectCreator::create	qqmlobjectcreator.cpp	197	0x7ffff73b8e32	
      18	QQmlComponentPrivate::beginCreate	qqmlcomponent.cpp	870	0x7ffff7323935	
      19	QQmlComponent::beginCreate	qqmlcomponent.cpp	819	0x7ffff73235d1	
      20	QQmlComponent::create	qqmlcomponent.cpp	779	0x7ffff7323518	
      21	QQmlApplicationEnginePrivate::_q_finishLoad	qqmlapplicationengine.cpp	130	0x7ffff73af8b9	
      22	QQmlApplicationEnginePrivate::startLoad	qqmlapplicationengine.cpp	109	0x7ffff73af658	
      23	QQmlApplicationEngine::load	qqmlapplicationengine.cpp	250	0x7ffff73afc14	
      24	main	main.cpp	9	0x400f3a				
      

      Full backtrace:

      
      Thread 1 (Thread 0x7ffff7fc3780 (LWP 10321)):
      #0  0x00007ffff6051267 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55
              resultvar = 0
              pid = 10321
              selftid = 10321
      #1  0x00007ffff6052eca in __GI_abort () at abort.c:89
              save_stage = 2
              act = {__sigaction_handler = {sa_handler = 0x2, sa_sigaction = 0x2}, sa_mask = {__val = {140737488342352, 0, 140737351974688, 140737488342512, 65535, 140737488342240, 140737331120742, 8404432, 140737334774848, 0, 140737334774848, 140737488342672, 4294967295, 140737488342384, 140737488342672, 3}}, sa_flags = 8405120, sa_restorer = 0x0}
              sigs = {__val = {32, 0 <repeats 15 times>}}
      #2  0x00007ffff6a2bff1 in qt_message_fatal (context=..., message=...) at /home/mitch/dev/qt5.6/qtbase/src/corelib/global/qlogging.cpp:1610
      No locals.
      #3  0x00007ffff6a2829a in QMessageLogger::fatal (this=0x7fffffffce90, msg=0x7ffff6d84eb8 "ASSERT failure in %s: \"%s\", file %s, line %d") at /home/mitch/dev/qt5.6/qtbase/src/corelib/global/qlogging.cpp:784
              message = {static null = {<No data fields>}, d = 0x804730}
              ap = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7fffffffce70, reg_save_area = 0x7fffffffcdb0}}
      #4  0x00007ffff6a20a91 in qt_assert_x (where=0x7ffff74eed67 "QVector<T>::at", what=0x7ffff74eec65 "index out of range", file=0x7ffff74eed00 "/home/mitch/dev/qt5.6-debug/qtbase/include/QtCore/../../../../qt5.6/qtbase/src/corelib/tools/qvector.h", line=419) at /home/mitch/dev/qt5.6/qtbase/src/corelib/global/qglobal.cpp:3002
              __PRETTY_FUNCTION__ = "void qt_assert_x(const char*, const char*, const char*, int)"
      #5  0x00007ffff73c178b in QVector<QQmlPropertyData*>::at (this=0x7fffc4040008, i=0) at /home/mitch/dev/qt5.6-debug/qtbase/include/QtCore/../../../../qt5.6/qtbase/src/corelib/tools/qvector.h:419
      No locals.
      #6  0x00007ffff73bbba4 in QQmlObjectCreator::setupBindings (this=0x71e9d0, bindingsToSkip=...) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:682
              property = 0x7ffff707df99 <QAtomicOps<int>::load<int>(std::atomic<int> const&)+42>
              i = 0
              savedList = {object = 0x0, data = 0x0, append = 0x0, count = 0x0, at = 0x0, clear = 0x0, dummy1 = 0x0, dummy2 = 0x0}
              propertyData = @0x7fffc4040008: {d = 0x7ffff6d88c40 <QArrayData::shared_null>}
              currentListPropertyIndex = -1
              binding = 0x7fffc4041504
      #7  0x00007ffff73bfdc9 in QQmlObjectCreator::populateInstance (this=0x71e9d0, index=1, instance=0x92ab60, bindingTarget=0x92ab60, valueTypeProperty=0x0, bindingsToSkip=...) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1318
              declarativeData = 0x803b40
              obj = 0x7fffc4041420
              valueScope = {engine = 0x712270, mark = 0x7fffd27ff350}
              scopeObjectProtector = {ptr = 0x7fffd27ff350}
              cache = {o = 0x7fffc403f450}
              vmeMetaObject = 0x803bd0
              data = {d = 0x7ffff6d88c40 <QArrayData::shared_null>}
              bindingSkipList = {d = {d = 0x7ffff6d88c40 <QArrayData::shared_null>}}
      #8  0x00007ffff73bc62c in QQmlObjectCreator::setPropertyBinding (this=0x71e9d0, property=0x7fffc403fa28, binding=0x7fffc40414a4) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:780
              groupObject = 0x803e00
              valueType = 0x0
              valueTypeProperty = 0x0
              bindingTarget = 0x803e00
              obj = 0x7fffc40414c8
              createdSubObject = 0x0
              __PRETTY_FUNCTION__ = "bool QQmlObjectCreator::setPropertyBinding(const QQmlPropertyData*, const QV4::CompiledData::Binding*)"
      #9  0x00007ffff73bbce8 in QQmlObjectCreator::setupBindings (this=0x71e9d0, bindingsToSkip=...) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:695
              property = 0x7fffc403fa28
              i = 1
              savedList = {object = 0x72bb80, data = 0x0, append = 0x7fffd24786a0 <QQuickWindowPrivate::data_append(QQmlListProperty<QObject>*, QObject*)>, count = 0x7fffd247874e <QQuickWindowPrivate::data_count(QQmlListProperty<QObject>*)>, at = 0x7fffd247884e <QQuickWindowPrivate::data_at(QQmlListProperty<QObject>*, int)>, clear = 0x7fffd24788c6 <QQuickWindowPrivate::data_clear(QQmlListProperty<QObject>*)>, dummy1 = 0x0, dummy2 = 0x0}
              propertyData = @0x7fffc4040000: {d = 0x7fffc4040fa0}
              currentListPropertyIndex = -1
              binding = 0x7fffc40414a4
      #10 0x00007ffff73bfdc9 in QQmlObjectCreator::populateInstance (this=0x71e9d0, index=0, instance=0x72bb80, bindingTarget=0x72bb80, valueTypeProperty=0x0, bindingsToSkip=...) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1318
              declarativeData = 0xae0db0
              obj = 0x7fffc4041398
              valueScope = {engine = 0x712270, mark = 0x7fffd27ff348}
              scopeObjectProtector = {ptr = 0x7fffd27ff348}
              cache = {o = 0x7fffc403ee60}
              vmeMetaObject = 0x0
              data = {d = 0x7fffc403fb80}
              bindingSkipList = {d = {d = 0x7ffff6d88c40 <QArrayData::shared_null>}}
      #11 0x00007ffff73befe8 in QQmlObjectCreator::createInstance (this=0x71e9d0, index=1, parent=0x72bb80, isContextObject=false) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1165
              profiler = {<QQmlVmeProfiler::Data> = {m_url = {d = 0x0}, m_line = 0, m_column = 0, m_typeName = {static null = {<No data fields>}, d = 0x7ffff6d88c40 <QArrayData::shared_null>}}, profiler = 0x0}
              ocRestorer = {ep = 0x7115f0, oldCreator = 0x71e9d0}
              isComponent = false
              instance = 0x92ab60
              ddata = 0x803b40
              customParser = 0x0
              parserStatus = 0x92ab70
              installPropertyCache = true
              obj = 0x7fffc4041420
              bindingsToSkip = {d = {d = 0x7ffff6d88c40 <QArrayData::shared_null>}}
              cache = {o = 0x7fffc403f450}
              scopeObject = 0x72bb80
              valueScope = {engine = 0x712270, mark = 0x7fffd27ff340}
              qmlContext = 0x7fffd27ff330
              result = false
      #12 0x00007ffff73bc23f in QQmlObjectCreator::setPropertyBinding (this=0x71e9d0, property=0x7fffc403e378, binding=0x7fffc40413f8) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:741
              createdSubObject = 0x0
              __PRETTY_FUNCTION__ = "bool QQmlObjectCreator::setPropertyBinding(const QQmlPropertyData*, const QV4::CompiledData::Binding*)"
      #13 0x00007ffff73bbce8 in QQmlObjectCreator::setupBindings (this=0x71e9d0, bindingsToSkip=...) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:695
              property = 0x7fffc403e378
              i = 1
              savedList = {object = 0x0, data = 0x0, append = 0x0, count = 0x0, at = 0x0, clear = 0x0, dummy1 = 0x0, dummy2 = 0x0}
              propertyData = @0x7fffc403fff8: {d = 0x7fffc4041260}
              currentListPropertyIndex = 17
              binding = 0x7fffc40413f8
      #14 0x00007ffff73bfdc9 in QQmlObjectCreator::populateInstance (this=0x71e9d0, index=-1, instance=0x0, bindingTarget=0x7fffc400b830, valueTypeProperty=0x0, bindingsToSkip=...) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1318
              declarativeData = 0x0
              obj = 0x0
              valueScope = {engine = 0x712270, mark = 0x7fffd27ff338}
              scopeObjectProtector = {ptr = 0x7fffd27ff338}
              cache = {o = 0x0}
              vmeMetaObject = 0x0
              data = {d = 0x7ffff6d88c40 <QArrayData::shared_null>}
              bindingSkipList = {d = {d = 0x7ffff6d88c40 <QArrayData::shared_null>}}
      #15 0x00007ffff73befe8 in QQmlObjectCreator::createInstance (this=0x71e9d0, index=0, parent=0x0, isContextObject=true) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1165
              profiler = {<QQmlVmeProfiler::Data> = {m_url = {d = 0x0}, m_line = 0, m_column = 0, m_typeName = {static null = {<No data fields>}, d = 0x7ffff6d88c40 <QArrayData::shared_null>}}, profiler = 0x0}
              ocRestorer = {ep = 0x7115f0, oldCreator = 0x0}
              isComponent = false
              instance = 0x72bb80
              ddata = 0xae0db0
              customParser = 0x0
              parserStatus = 0x72bba8
              installPropertyCache = true
              obj = 0x7fffc4041398
              bindingsToSkip = {d = {d = 0x7ffff6d88c40 <QArrayData::shared_null>}}
              cache = {o = 0x7fffc403ee60}
              scopeObject = 0x0
              valueScope = {engine = 0x712270, mark = 0x7fffd27ff330}
              qmlContext = 0x0
              result = true
      #16 0x00007ffff73b8e32 in QQmlObjectCreator::create (this=0x71e9d0, subComponentIndex=-1, parent=0x0, interrupt=0x0) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:197
              objectToCreate = 0
              scope = {engine = 0x712270, mark = 0x7fffd27ff318}
              instance = 0x71e9d0
      #17 0x00007ffff7323935 in QQmlComponentPrivate::beginCreate (this=0x7ffb70, context=0x7cc400) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:870
              q = 0x7fac20
              __PRETTY_FUNCTION__ = "QObject* QQmlComponentPrivate::beginCreate(QQmlContextData*)"
              maxCreationDepth = 10
              enginePriv = 0x7115f0
              rv = 0x0
              service = 0x7cc340
      #18 0x00007ffff73235d1 in QQmlComponent::beginCreate (this=0x7fac20, publicContext=0x7cc340) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:819
              d = 0x7ffb70
              context = 0x7cc400
      #19 0x00007ffff7323518 in QQmlComponent::create (this=0x7fac20, context=0x7cc340) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:779
              d = 0x7ffb70
              _qml_memory_scope = {pushed = false}
              rv = 0x7fffffffe080
      #20 0x00007ffff73af8b9 in QQmlApplicationEnginePrivate::_q_finishLoad (this=0x7115f0, o=0x7fac20) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlapplicationengine.cpp:130
              q = 0x7fffffffe220
              c = 0x7fac20
              __PRETTY_FUNCTION__ = "void QQmlApplicationEnginePrivate::_q_finishLoad(QObject*)"
      #21 0x00007ffff73af658 in QQmlApplicationEnginePrivate::startLoad (this=0x7115f0, url=..., data=..., dataFlag=false) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlapplicationengine.cpp:109
              q = 0x7fffffffe220
              c = 0x7fac20
      #22 0x00007ffff73afc14 in QQmlApplicationEngine::load (this=0x7fffffffe220, url=...) at /home/mitch/dev/qt5.6/qtdeclarative/src/qml/qml/qqmlapplicationengine.cpp:250
              d = 0x7115f0
      #23 0x0000000000400f3a in main (argc=1, argv=0x7fffffffe338) at ../untitled1/main.cpp:9
              app = {<QCoreApplication> = {<QObject> = {_vptr.QObject = 0x7ffff7dc1f80 <vtable for QGuiApplication+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff6e4cf40 <qt_meta_stringdata_QObject>, data = 0x7ffff6e4d060 <qt_meta_data_QObject>, static_metacall = 0x7ffff6cd5b36 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x61b2d0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff6e9ca00 <qt_meta_stringdata_Qt>, data = 0x7ffff6ea76c0 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7ffff6fab5a0 <QObject::staticMetaObject>, stringdata = 0x7ffff6eb6f80 <qt_meta_stringdata_QCoreApplication>, data = 0x7ffff6eb71a0 <qt_meta_data_QCoreApplication>, static_metacall = 0x7ffff6d7d6ee <QCoreApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, static self = 0x7fffffffe210}, static staticMetaObject = {d = {superdata = 0x7ffff6fb42a0 <QCoreApplication::staticMetaObject>, stringdata = 0x7ffff7c06420 <qt_meta_stringdata_QGuiApplication>, data = 0x7ffff7c06960 <qt_meta_data_QGuiApplication>, static_metacall = 0x7ffff77582fe <QGuiApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}
              engine = {<QQmlEngine> = {<QJSEngine> = {<QObject> = {_vptr.QObject = 0x7ffff762bea0 <vtable for QQmlApplicationEngine+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff6e4cf40 <qt_meta_stringdata_QObject>, data = 0x7ffff6e4d060 <qt_meta_data_QObject>, static_metacall = 0x7ffff6cd5b36 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x7115f0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff6e9ca00 <qt_meta_stringdata_Qt>, data = 0x7ffff6ea76c0 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7ffff6fab5a0 <QObject::staticMetaObject>, stringdata = 0x7ffff7444520 <qt_meta_stringdata_QJSEngine>, data = 0x7ffff7444560 <qt_meta_data_QJSEngine>, static_metacall = 0x7ffff717e5ee <QJSEngine::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x711f60}, static staticMetaObject = {d = {superdata = 0x7ffff7627ec0 <QJSEngine::staticMetaObject>, stringdata = 0x7ffff74fdae0 <qt_meta_stringdata_QQmlEngine>, data = 0x7ffff74fdbc0 <qt_meta_data_QQmlEngine>, static_metacall = 0x7ffff7421e82 <QQmlEngine::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7ffff762d4e0 <QQmlEngine::staticMetaObject>, stringdata = 0x7ffff74eba00 <qt_meta_stringdata_QQmlApplicationEngine>, data = 0x7ffff74ebb60 <qt_meta_data_QQmlApplicationEngine>, static_metacall = 0x7ffff73afd4e <QQmlApplicationEngine::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}
      

      Attachments

        Issue Links

          Activity

            People

              shausman Simon Hausmann
              mitch_curtis Mitch Curtis
              Votes:
              1 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: