https://bugs.kde.org/show_bug.cgi?id=357317

David Edmundson <k...@davidedmundson.co.uk> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |CONFIRMED
     Ever confirmed|0                           |1

--- Comment #1 from David Edmundson <k...@davidedmundson.co.uk> ---
I'm 85% sure I know what it is.

Clue 1:

I have a valgrind warning. but no crash.
==23261== Invalid read of size 8
==23261==    at 0x73A12D5: QQuickItem::~QQuickItem() (qquickitem.cpp:2377)
==23261==    by 0x7418040: QQmlPrivate::QQmlElement<QQuickItem>::~QQmlElement()
(qqmlprivate.h:104)
==23261==    by 0x7418061: QQmlPrivate::QQmlElement<QQuickItem>::~QQmlElement()
(qqmlprivate.h:104)
==23261==    by 0xBAA479F: QObjectPrivate::deleteChildren() (qobject.cpp:1970)
==23261==    by 0xBAA2DBC: QObject::~QObject() (qobject.cpp:1041)
==23261==    by 0x73A15E1: QQuickItem::~QQuickItem() (qquickitem.cpp:2342)
==23261==    by 0x279DBA01: DeclarativeDropArea::~DeclarativeDropArea()
(DeclarativeDropArea.h:31)
==23261==    by 0x279DDB7E:
QQmlPrivate::QQmlElement<DeclarativeDropArea>::~QQmlElement()
(qqmlprivate.h:104)
==23261==    by 0x279DDB9F:
QQmlPrivate::QQmlElement<DeclarativeDropArea>::~QQmlElement()
(qqmlprivate.h:104)
==23261==    by 0x505DF71: PlasmaQuick::AppletQuickItem::~AppletQuickItem()
(appletquickitem.cpp:425)
==23261==    by 0x225A9648: AppletInterface::~AppletInterface()
(appletinterface.cpp:122)
==23261==    by 0x225CAE5C: ContainmentInterface::~ContainmentInterface()
(containmentinterface.h:50)
==23261==  Address 0x27722520 is 32 bytes inside a block of size 48 free'd
==23261==    at 0x4C2B1C6: operator delete(void*) (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23261==    by 0x279B2504:
QQmlPrivate::QQmlElement<QQuickGridLayout>::~QQmlElement() (qqmlprivate.h:104)
==23261==    by 0xBAA479F: QObjectPrivate::deleteChildren() (qobject.cpp:1970)
==23261==    by 0xBAA2DBC: QObject::~QObject() (qobject.cpp:1041)
==23261==    by 0x73A15E1: QQuickItem::~QQuickItem() (qquickitem.cpp:2342)
==23261==    by 0x279DBA01: DeclarativeDropArea::~DeclarativeDropArea()
(DeclarativeDropArea.h:31)
==23261==    by 0x279DDB7E:
QQmlPrivate::QQmlElement<DeclarativeDropArea>::~QQmlElement()
(qqmlprivate.h:104)
==23261==    by 0x279DDB9F:
QQmlPrivate::QQmlElement<DeclarativeDropArea>::~QQmlElement()
(qqmlprivate.h:104)
==23261==    by 0x505DF71: PlasmaQuick::AppletQuickItem::~AppletQuickItem()
(appletquickitem.cpp:425)
==23261==    by 0x225A9648: AppletInterface::~AppletInterface()
(appletinterface.cpp:122)
==23261==    by 0x225CAE5C: ContainmentInterface::~ContainmentInterface()
(containmentinterface.h:50)
==23261==    by 0x225CAE81: ContainmentInterface::~ContainmentInterface()
(containmentinterface.h:50)


so it's trying to delete an object that's already been deleted by itself.

Which implies it's the children() gets muddled about during a QQuickItem's
destructor. 

I've seen this before in a differnet place
(https://bugreports.qt.io/browse/QTBUG-55460) on a work project with an item
that reparented itself whilst the parent was deleting the children.

Clue 2:
I went looking for declarativeDropAreas with children in gammaray.
The only one I've seen is the panel containment 
plasma-desktop/containments/panel/contents/ui/

lastSpacer  will move between being parented between root and nothing depending
depending on items. I think it's changing parents whilst root is tearing down,
moving to the layout, getting deleted by that..but it's still in the list of
items for root to kill .. and then BAM.

If it is that, ideally we should write a test case and fix Qt. But we should
probably work around it here. probably by not reparenting willy nilly and just
set visible to false.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to