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

QQC leaks attached objects

    XMLWordPrintable

Details

    • a3389d6bf (dev), daa9ec6a0 (6.6), 0e91378e1 (6.5)

    Description

      For example:

      14:15:32: Starting /home/ulf/qt6dev/qtdeclarative/tests/auto/quickcontrols/qquickmaterialstyle/tst_qquickmaterialstyle Material::test_font:SwitchDelegate:pixelSize...
      ********* Start testing of tst_qquickmaterialstyle *********
      Config: Using QtTest library 6.6.0, Qt 6.6.0 (x86_64-little_endian-lp64 shared (dynamic) debug build; by GCC 10.2.1 20210110), debian 11
      PASS   : tst_qquickmaterialstyle::Material::initTestCase()
      PASS   : tst_qquickmaterialstyle::Material::test_font(SwitchDelegate:pixelSize)
      PASS   : tst_qquickmaterialstyle::Material::cleanupTestCase()
      Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 114ms
      ********* Finished testing of tst_qquickmaterialstyle *********
      
      =================================================================
      ==107050==ERROR: LeakSanitizer: detected memory leaks
      
      Direct leak of 184 byte(s) in 1 object(s) allocated from:
          #0 0x7f213daab647 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:99
          #1 0x7f21373209d1 in QQmlData::createQQmlData(QObjectPrivate*) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlengine.cpp:1528
          #2 0x7f2136d5f4e0 in QQmlData::get(QObjectPrivate*, bool) /home/ulf/qt6dev/qtbase/include/QtQml/6.6.0/QtQml/private/../../../../../../../qt6dev-src/qtdeclarative/src/qml/qml/qqmldata_p.h:206
          #3 0x7f2136d5f5bc in QQmlData::get(QObject*, bool) /home/ulf/qt6dev/qtbase/include/QtQml/6.6.0/QtQml/private/../../../../../../../qt6dev-src/qtdeclarative/src/qml/qml/qqmldata_p.h:223
          #4 0x7f21371fea69 in qmlAttachedPropertiesObject(QObject*, QObject* (*)(QObject*), bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqml.cpp:115
          #5 0x7f212b51a7f4 in QObject* qmlAttachedPropertiesObject<QQuickAccessibleAttached>(QObject const*, bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqml.h:670
          #6 0x7f212b519f25 in QQuickAccessibleAttached::setProperty(QObject*, char const*, QVariant const&) (/home/ulf/qt6dev/qtbase/lib/libQt6QuickTemplates2.so.6+0x319f25)
          #7 0x7f212b513be9 in QQuickControl::setAccessibleProperty(char const*, QVariant const&) /home/ulf/qt6dev-src/qtdeclarative/src/quicktemplates/qquickcontrol.cpp:2233
          #8 0x7f212b47cb99 in QQuickAbstractButton::setCheckable(bool) /home/ulf/qt6dev-src/qtdeclarative/src/quicktemplates/qquickabstractbutton.cpp:672
          #9 0x7f212b6be02e in QQuickSwitchDelegate::QQuickSwitchDelegate(QQuickItem*) /home/ulf/qt6dev-src/qtdeclarative/src/quicktemplates/qquickswitchdelegate.cpp:104
          #10 0x7f212b7c4670 in QQmlPrivate::QQmlElement<QQuickSwitchDelegate>::QQmlElement() /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlprivate.h:94
          #11 0x7f212b7c46ff in void QQmlPrivate::createInto<QQuickSwitchDelegate>(void*, void*) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlprivate.h:169
          #12 0x7f21376bf3fe in QQmlType::create(void**, unsigned long) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmltype.cpp:477
          #13 0x7f21376bf575 in QQmlType::createWithQQmlData() const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmltype.cpp:492
          #14 0x7f213759a2aa in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1234
          #15 0x7f2137588caf in QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:199
          #16 0x7f213759adb2 in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1272
          #17 0x7f2137588caf in QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:199
          #18 0x7f21372b9471 in QQmlComponentPrivate::beginCreate(QQmlRefPointer<QQmlContextData>) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1080
          #19 0x7f21372b8438 in QQmlComponent::beginCreate(QQmlContext*) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1004
          #20 0x7f213728a0b7 in QtObject::createQmlObject(QString const&, QObject*, QUrl const&) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlbuiltinfunctions.cpp:1397
          #21 0x7f21372a2af3 in QtObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/ulf/qt6dev/qtdeclarative/src/qml/Qml_autogen/include/moc_qqmlbuiltinfunctions_p.cpp:1333
          #22 0x7f21372a556a in QtObject::qt_metacall(QMetaObject::Call, int, void**) /home/ulf/qt6dev/qtdeclarative/src/qml/Qml_autogen/include/moc_qqmlbuiltinfunctions_p.cpp:1500
          #23 0x7f213a632b24 in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) /home/ulf/qt6dev-src/qtbase/src/corelib/kernel/qmetaobject.cpp:334
          #24 0x7f21375c87bd in QQmlObjectOrGadget::metacall(QMetaObject::Call, int, void**) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectorgadget.cpp:14
          #25 0x7f2136ff2588 in CallMethod /home/ulf/qt6dev-src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1503
          #26 0x7f2136ff5128 in CallPrecise /home/ulf/qt6dev-src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1763
          #27 0x7f2136ffec61 in operator() /home/ulf/qt6dev-src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:2674
          #28 0x7f2136ffef05 in operator()<QV4::QObjectMethod::callInternal(const QV4::Value*, const QV4::Value*, int) const::<lambda()> > /home/ulf/qt6dev-src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:2651
          #29 0x7f2137000525 in QV4::QObjectMethod::callInternal(QV4::Value const*, QV4::Value const*, int) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:2674
      
      Direct leak of 64 byte(s) in 1 object(s) allocated from:
          #0 0x7f213daab647 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:99
          #1 0x7f2128e67879  (/home/ulf/qt6dev/qtbase/lib/libQt6Gui.so.6.6.0+0xbc67879)
      
      Indirect leak of 768 byte(s) in 1 object(s) allocated from:
          #0 0x7f213daab7a7 in operator new[](unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:102
          #1 0x7f213722fd1e in QHashPrivate::Span<QHashPrivate::Node<QObject* (*)(QObject*), QObject*> >::addStorage() (/home/ulf/qt6dev/qtbase/lib/libQt6Qml.so.6+0xa2fd1e)
          #2 0x7f213722e36d in QHashPrivate::Span<QHashPrivate::Node<QObject* (*)(QObject*), QObject*> >::insert(unsigned long) (/home/ulf/qt6dev/qtbase/lib/libQt6Qml.so.6+0xa2e36d)
          #3 0x7f213722bbd3 in QHashPrivate::Data<QHashPrivate::Node<QObject* (*)(QObject*), QObject*> >::Bucket::insert() const /home/ulf/qt6dev-src/qtbase/src/corelib/tools/qhash.h:511
          #4 0x7f2137227ff4 in QHashPrivate::Data<QHashPrivate::Node<QObject* (*)(QObject*), QObject*> >::findOrInsert(QObject* (* const&)(QObject*)) /home/ulf/qt6dev-src/qtbase/src/corelib/tools/qhash.h:728
          #5 0x7f21372252a2 in QHash<QObject* (*)(QObject*), QObject*>::iterator QHash<QObject* (*)(QObject*), QObject*>::emplace_helper<QObject* const&>(QObject* (*&&)(QObject*), QObject* const&) (/home/ulf/qt6dev/qtbase/lib/libQt6Qml.so.6+0xa252a2)
          #6 0x7f2137221876 in QHash<QObject* (*)(QObject*), QObject*>::iterator QHash<QObject* (*)(QObject*), QObject*>::emplace<QObject* const&>(QObject* (*&&)(QObject*), QObject* const&) (/home/ulf/qt6dev/qtbase/lib/libQt6Qml.so.6+0xa21876)
          #7 0x7f213721ee13 in QHash<QObject* (*)(QObject*), QObject*>::iterator QHash<QObject* (*)(QObject*), QObject*>::emplace<QObject* const&>(QObject* (* const&)(QObject*), QObject* const&) (/home/ulf/qt6dev/qtbase/lib/libQt6Qml.so.6+0xa1ee13)
          #8 0x7f213721b390 in QHash<QObject* (*)(QObject*), QObject*>::insert(QObject* (* const&)(QObject*), QObject* const&) /home/ulf/qt6dev-src/qtbase/src/corelib/tools/qhash.h:1285
          #9 0x7f21371fe957 in resolveAttachedProperties /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqml.cpp:97
          #10 0x7f21371fea93 in qmlAttachedPropertiesObject(QObject*, QObject* (*)(QObject*), bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqml.cpp:122
          #11 0x7f212b51a7f4 in QObject* qmlAttachedPropertiesObject<QQuickAccessibleAttached>(QObject const*, bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqml.h:670
          #12 0x7f212b519f25 in QQuickAccessibleAttached::setProperty(QObject*, char const*, QVariant const&) (/home/ulf/qt6dev/qtbase/lib/libQt6QuickTemplates2.so.6+0x319f25)
          #13 0x7f212b513be9 in QQuickControl::setAccessibleProperty(char const*, QVariant const&) /home/ulf/qt6dev-src/qtdeclarative/src/quicktemplates/qquickcontrol.cpp:2233
          #14 0x7f212b47cb99 in QQuickAbstractButton::setCheckable(bool) /home/ulf/qt6dev-src/qtdeclarative/src/quicktemplates/qquickabstractbutton.cpp:672
          #15 0x7f212b6be02e in QQuickSwitchDelegate::QQuickSwitchDelegate(QQuickItem*) /home/ulf/qt6dev-src/qtdeclarative/src/quicktemplates/qquickswitchdelegate.cpp:104
          #16 0x7f212b7c4670 in QQmlPrivate::QQmlElement<QQuickSwitchDelegate>::QQmlElement() /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlprivate.h:94
          #17 0x7f212b7c46ff in void QQmlPrivate::createInto<QQuickSwitchDelegate>(void*, void*) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlprivate.h:169
          #18 0x7f21376bf3fe in QQmlType::create(void**, unsigned long) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmltype.cpp:477
          #19 0x7f21376bf575 in QQmlType::createWithQQmlData() const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmltype.cpp:492
          #20 0x7f213759a2aa in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1234
          #21 0x7f2137588caf in QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:199
          #22 0x7f213759adb2 in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1272
          #23 0x7f2137588caf in QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:199
          #24 0x7f21372b9471 in QQmlComponentPrivate::beginCreate(QQmlRefPointer<QQmlContextData>) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1080
          #25 0x7f21372b8438 in QQmlComponent::beginCreate(QQmlContext*) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1004
          #26 0x7f213728a0b7 in QtObject::createQmlObject(QString const&, QObject*, QUrl const&) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlbuiltinfunctions.cpp:1397
          #27 0x7f21372a2af3 in QtObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/ulf/qt6dev/qtdeclarative/src/qml/Qml_autogen/include/moc_qqmlbuiltinfunctions_p.cpp:1333
          #28 0x7f21372a556a in QtObject::qt_metacall(QMetaObject::Call, int, void**) /home/ulf/qt6dev/qtdeclarative/src/qml/Qml_autogen/include/moc_qqmlbuiltinfunctions_p.cpp:1500
          #29 0x7f213a632b24 in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) /home/ulf/qt6dev-src/qtbase/src/corelib/kernel/qmetaobject.cpp:334
      
      Indirect leak of 152 byte(s) in 1 object(s) allocated from:
          #0 0x7f213daab7a7 in operator new[](unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:102
          #1 0x7f213722b668 in QHashPrivate::Data<QHashPrivate::Node<QObject* (*)(QObject*), QObject*> >::allocateSpans(unsigned long) /home/ulf/qt6dev-src/qtbase/src/corelib/tools/qhash.h:550
          #2 0x7f213722bece in QHashPrivate::Data<QHashPrivate::Node<QObject* (*)(QObject*), QObject*> >::Data(unsigned long) /home/ulf/qt6dev-src/qtbase/src/corelib/tools/qhash.h:556
          #3 0x7f21372286d0 in QHashPrivate::Data<QHashPrivate::Node<QObject* (*)(QObject*), QObject*> >::detached(QHashPrivate::Data<QHashPrivate::Node<QObject* (*)(QObject*), QObject*> >*) /home/ulf/qt6dev-src/qtbase/src/corelib/tools/qhash.h:593
          #4 0x7f21372255c5 in QHash<QObject* (*)(QObject*), QObject*>::detach() (/home/ulf/qt6dev/qtbase/lib/libQt6Qml.so.6+0xa255c5)
          #5 0x7f213722183d in QHash<QObject* (*)(QObject*), QObject*>::iterator QHash<QObject* (*)(QObject*), QObject*>::emplace<QObject* const&>(QObject* (*&&)(QObject*), QObject* const&) (/home/ulf/qt6dev/qtbase/lib/libQt6Qml.so.6+0xa2183d)
          #6 0x7f213721ee13 in QHash<QObject* (*)(QObject*), QObject*>::iterator QHash<QObject* (*)(QObject*), QObject*>::emplace<QObject* const&>(QObject* (* const&)(QObject*), QObject* const&) (/home/ulf/qt6dev/qtbase/lib/libQt6Qml.so.6+0xa1ee13)
          #7 0x7f213721b390 in QHash<QObject* (*)(QObject*), QObject*>::insert(QObject* (* const&)(QObject*), QObject* const&) /home/ulf/qt6dev-src/qtbase/src/corelib/tools/qhash.h:1285
          #8 0x7f21371fe957 in resolveAttachedProperties /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqml.cpp:97
          #9 0x7f21371fea93 in qmlAttachedPropertiesObject(QObject*, QObject* (*)(QObject*), bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqml.cpp:122
          #10 0x7f212b51a7f4 in QObject* qmlAttachedPropertiesObject<QQuickAccessibleAttached>(QObject const*, bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqml.h:670
          #11 0x7f212b519f25 in QQuickAccessibleAttached::setProperty(QObject*, char const*, QVariant const&) (/home/ulf/qt6dev/qtbase/lib/libQt6QuickTemplates2.so.6+0x319f25)
          #12 0x7f212b513be9 in QQuickControl::setAccessibleProperty(char const*, QVariant const&) /home/ulf/qt6dev-src/qtdeclarative/src/quicktemplates/qquickcontrol.cpp:2233
          #13 0x7f212b47cb99 in QQuickAbstractButton::setCheckable(bool) /home/ulf/qt6dev-src/qtdeclarative/src/quicktemplates/qquickabstractbutton.cpp:672
          #14 0x7f212b6be02e in QQuickSwitchDelegate::QQuickSwitchDelegate(QQuickItem*) /home/ulf/qt6dev-src/qtdeclarative/src/quicktemplates/qquickswitchdelegate.cpp:104
          #15 0x7f212b7c4670 in QQmlPrivate::QQmlElement<QQuickSwitchDelegate>::QQmlElement() /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlprivate.h:94
          #16 0x7f212b7c46ff in void QQmlPrivate::createInto<QQuickSwitchDelegate>(void*, void*) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlprivate.h:169
          #17 0x7f21376bf3fe in QQmlType::create(void**, unsigned long) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmltype.cpp:477
          #18 0x7f21376bf575 in QQmlType::createWithQQmlData() const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmltype.cpp:492
          #19 0x7f213759a2aa in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1234
          #20 0x7f2137588caf in QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:199
          #21 0x7f213759adb2 in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1272
          #22 0x7f2137588caf in QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:199
          #23 0x7f21372b9471 in QQmlComponentPrivate::beginCreate(QQmlRefPointer<QQmlContextData>) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1080
          #24 0x7f21372b8438 in QQmlComponent::beginCreate(QQmlContext*) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1004
          #25 0x7f213728a0b7 in QtObject::createQmlObject(QString const&, QObject*, QUrl const&) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlbuiltinfunctions.cpp:1397
          #26 0x7f21372a2af3 in QtObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/ulf/qt6dev/qtdeclarative/src/qml/Qml_autogen/include/moc_qqmlbuiltinfunctions_p.cpp:1333
          #27 0x7f21372a556a in QtObject::qt_metacall(QMetaObject::Call, int, void**) /home/ulf/qt6dev/qtdeclarative/src/qml/Qml_autogen/include/moc_qqmlbuiltinfunctions_p.cpp:1500
          #28 0x7f213a632b24 in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) /home/ulf/qt6dev-src/qtbase/src/corelib/kernel/qmetaobject.cpp:334
          #29 0x7f21375c87bd in QQmlObjectOrGadget::metacall(QMetaObject::Call, int, void**) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectorgadget.cpp:14
      
      Indirect leak of 56 byte(s) in 1 object(s) allocated from:
          #0 0x7f213daaa037 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:154
          #1 0x7f2129111261  (<unknown module>)
      
      Indirect leak of 56 byte(s) in 1 object(s) allocated from:
          #0 0x7f213daaa037 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:154
          #1 0x7f212911124a  (<unknown module>)
      
      Indirect leak of 40 byte(s) in 1 object(s) allocated from:
          #0 0x7f213daab647 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:99
          #1 0x7f21372286c0 in QHashPrivate::Data<QHashPrivate::Node<QObject* (*)(QObject*), QObject*> >::detached(QHashPrivate::Data<QHashPrivate::Node<QObject* (*)(QObject*), QObject*> >*) /home/ulf/qt6dev-src/qtbase/src/corelib/tools/qhash.h:593
          #2 0x7f21372255c5 in QHash<QObject* (*)(QObject*), QObject*>::detach() (/home/ulf/qt6dev/qtbase/lib/libQt6Qml.so.6+0xa255c5)
          #3 0x7f213722183d in QHash<QObject* (*)(QObject*), QObject*>::iterator QHash<QObject* (*)(QObject*), QObject*>::emplace<QObject* const&>(QObject* (*&&)(QObject*), QObject* const&) (/home/ulf/qt6dev/qtbase/lib/libQt6Qml.so.6+0xa2183d)
          #4 0x7f213721ee13 in QHash<QObject* (*)(QObject*), QObject*>::iterator QHash<QObject* (*)(QObject*), QObject*>::emplace<QObject* const&>(QObject* (* const&)(QObject*), QObject* const&) (/home/ulf/qt6dev/qtbase/lib/libQt6Qml.so.6+0xa1ee13)
          #5 0x7f213721b390 in QHash<QObject* (*)(QObject*), QObject*>::insert(QObject* (* const&)(QObject*), QObject* const&) /home/ulf/qt6dev-src/qtbase/src/corelib/tools/qhash.h:1285
          #6 0x7f21371fe957 in resolveAttachedProperties /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqml.cpp:97
          #7 0x7f21371fea93 in qmlAttachedPropertiesObject(QObject*, QObject* (*)(QObject*), bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqml.cpp:122
          #8 0x7f212b51a7f4 in QObject* qmlAttachedPropertiesObject<QQuickAccessibleAttached>(QObject const*, bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqml.h:670
          #9 0x7f212b519f25 in QQuickAccessibleAttached::setProperty(QObject*, char const*, QVariant const&) (/home/ulf/qt6dev/qtbase/lib/libQt6QuickTemplates2.so.6+0x319f25)
          #10 0x7f212b513be9 in QQuickControl::setAccessibleProperty(char const*, QVariant const&) /home/ulf/qt6dev-src/qtdeclarative/src/quicktemplates/qquickcontrol.cpp:2233
          #11 0x7f212b47cb99 in QQuickAbstractButton::setCheckable(bool) /home/ulf/qt6dev-src/qtdeclarative/src/quicktemplates/qquickabstractbutton.cpp:672
          #12 0x7f212b6be02e in QQuickSwitchDelegate::QQuickSwitchDelegate(QQuickItem*) /home/ulf/qt6dev-src/qtdeclarative/src/quicktemplates/qquickswitchdelegate.cpp:104
          #13 0x7f212b7c4670 in QQmlPrivate::QQmlElement<QQuickSwitchDelegate>::QQmlElement() /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlprivate.h:94
          #14 0x7f212b7c46ff in void QQmlPrivate::createInto<QQuickSwitchDelegate>(void*, void*) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlprivate.h:169
          #15 0x7f21376bf3fe in QQmlType::create(void**, unsigned long) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmltype.cpp:477
          #16 0x7f21376bf575 in QQmlType::createWithQQmlData() const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmltype.cpp:492
          #17 0x7f213759a2aa in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1234
          #18 0x7f2137588caf in QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:199
          #19 0x7f213759adb2 in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1272
          #20 0x7f2137588caf in QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:199
          #21 0x7f21372b9471 in QQmlComponentPrivate::beginCreate(QQmlRefPointer<QQmlContextData>) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1080
          #22 0x7f21372b8438 in QQmlComponent::beginCreate(QQmlContext*) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1004
          #23 0x7f213728a0b7 in QtObject::createQmlObject(QString const&, QObject*, QUrl const&) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlbuiltinfunctions.cpp:1397
          #24 0x7f21372a2af3 in QtObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/ulf/qt6dev/qtdeclarative/src/qml/Qml_autogen/include/moc_qqmlbuiltinfunctions_p.cpp:1333
          #25 0x7f21372a556a in QtObject::qt_metacall(QMetaObject::Call, int, void**) /home/ulf/qt6dev/qtdeclarative/src/qml/Qml_autogen/include/moc_qqmlbuiltinfunctions_p.cpp:1500
          #26 0x7f213a632b24 in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) /home/ulf/qt6dev-src/qtbase/src/corelib/kernel/qmetaobject.cpp:334
          #27 0x7f21375c87bd in QQmlObjectOrGadget::metacall(QMetaObject::Call, int, void**) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectorgadget.cpp:14
          #28 0x7f2136ff2588 in CallMethod /home/ulf/qt6dev-src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1503
          #29 0x7f2136ff5128 in CallPrecise /home/ulf/qt6dev-src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1763
      
      Indirect leak of 8 byte(s) in 1 object(s) allocated from:
          #0 0x7f213daab647 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:99
          #1 0x7f213731f30f in QQmlData::attachedProperties() const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlengine.cpp:1408
          #2 0x7f21371fe941 in resolveAttachedProperties /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqml.cpp:97
          #3 0x7f21371fea93 in qmlAttachedPropertiesObject(QObject*, QObject* (*)(QObject*), bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqml.cpp:122
          #4 0x7f212b51a7f4 in QObject* qmlAttachedPropertiesObject<QQuickAccessibleAttached>(QObject const*, bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqml.h:670
          #5 0x7f212b519f25 in QQuickAccessibleAttached::setProperty(QObject*, char const*, QVariant const&) (/home/ulf/qt6dev/qtbase/lib/libQt6QuickTemplates2.so.6+0x319f25)
          #6 0x7f212b513be9 in QQuickControl::setAccessibleProperty(char const*, QVariant const&) /home/ulf/qt6dev-src/qtdeclarative/src/quicktemplates/qquickcontrol.cpp:2233
          #7 0x7f212b47cb99 in QQuickAbstractButton::setCheckable(bool) /home/ulf/qt6dev-src/qtdeclarative/src/quicktemplates/qquickabstractbutton.cpp:672
          #8 0x7f212b6be02e in QQuickSwitchDelegate::QQuickSwitchDelegate(QQuickItem*) /home/ulf/qt6dev-src/qtdeclarative/src/quicktemplates/qquickswitchdelegate.cpp:104
          #9 0x7f212b7c4670 in QQmlPrivate::QQmlElement<QQuickSwitchDelegate>::QQmlElement() /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlprivate.h:94
          #10 0x7f212b7c46ff in void QQmlPrivate::createInto<QQuickSwitchDelegate>(void*, void*) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlprivate.h:169
          #11 0x7f21376bf3fe in QQmlType::create(void**, unsigned long) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmltype.cpp:477
          #12 0x7f21376bf575 in QQmlType::createWithQQmlData() const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmltype.cpp:492
          #13 0x7f213759a2aa in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1234
          #14 0x7f2137588caf in QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:199
          #15 0x7f213759adb2 in QQmlObjectCreator::createInstance(int, QObject*, bool) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1272
          #16 0x7f2137588caf in QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:199
          #17 0x7f21372b9471 in QQmlComponentPrivate::beginCreate(QQmlRefPointer<QQmlContextData>) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1080
          #18 0x7f21372b8438 in QQmlComponent::beginCreate(QQmlContext*) /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1004
          #19 0x7f213728a0b7 in QtObject::createQmlObject(QString const&, QObject*, QUrl const&) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlbuiltinfunctions.cpp:1397
          #20 0x7f21372a2af3 in QtObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/ulf/qt6dev/qtdeclarative/src/qml/Qml_autogen/include/moc_qqmlbuiltinfunctions_p.cpp:1333
          #21 0x7f21372a556a in QtObject::qt_metacall(QMetaObject::Call, int, void**) /home/ulf/qt6dev/qtdeclarative/src/qml/Qml_autogen/include/moc_qqmlbuiltinfunctions_p.cpp:1500
          #22 0x7f213a632b24 in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) /home/ulf/qt6dev-src/qtbase/src/corelib/kernel/qmetaobject.cpp:334
          #23 0x7f21375c87bd in QQmlObjectOrGadget::metacall(QMetaObject::Call, int, void**) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/qml/qqmlobjectorgadget.cpp:14
          #24 0x7f2136ff2588 in CallMethod /home/ulf/qt6dev-src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1503
          #25 0x7f2136ff5128 in CallPrecise /home/ulf/qt6dev-src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1763
          #26 0x7f2136ffec61 in operator() /home/ulf/qt6dev-src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:2674
          #27 0x7f2136ffef05 in operator()<QV4::QObjectMethod::callInternal(const QV4::Value*, const QV4::Value*, int) const::<lambda()> > /home/ulf/qt6dev-src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:2651
          #28 0x7f2137000525 in QV4::QObjectMethod::callInternal(QV4::Value const*, QV4::Value const*, int) const /home/ulf/qt6dev-src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:2674
          #29 0x7f2136ffdead in QV4::QObjectMethod::virtualCall(QV4::FunctionObject const*, QV4::Value const*, QV4::Value const*, int) /home/ulf/qt6dev-src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:2571
      
      SUMMARY: AddressSanitizer: 1328 byte(s) leaked in 8 allocation(s).
      

      Attached objects are usually garbage-collected but if you sidestep the garbage collection by retrieving them from C++, you have to manage their life cycles yourself. Unfortunately the same object could also show up somewhere in QML. So the best way to deal with the situation may be to parent the attached object to the "host" object.

      Attachments

        For Gerrit Dashboard: QTBUG-114186
        # Subject Branch Project Status CR V

        Activity

          People

            ulherman Ulf Hermann
            ulherman Ulf Hermann
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes