[Interest] qtwayland compositor crashes on quit
Florian Hänel
florian.haenel at echtzeit.solutions
Mon Apr 17 20:32:10 CEST 2023
Hi,
I am seeing our qtwayland/quick compositor crash when I issue quit and
have clients still connected.
It appears that surface destruction tries to remove itself from views
and/or outputs but the output is already destroyed by deleteChildren
from the quick application shutdown.
What could I be missing? Do I need to manually disconnect clients upon
shutdown?
Valgrind log follows:
==1687982== Invalid write of size 4
==1687982== at 0x4946280: erase (qvector.h:936)
==1687982== by 0x4946280: remove (qvector.h:478)
==1687982== by 0x4946280:
QWaylandOutputPrivate::removeView(QWaylandView*, QWaylandSurface*)
(qwaylandoutput.cpp:237)
==1687982== by 0x4949B32: QWaylandView::~QWaylandView()
(qwaylandview.cpp:95)
==1687982== by 0x4949B6C: QWaylandView::~QWaylandView()
(qwaylandview.cpp:100)
==1687982== by 0x4977CA7: cleanup (qscopedpointer.h:60)
==1687982== by 0x4977CA7: ~QScopedPointer (qscopedpointer.h:107)
==1687982== by 0x4977CA7: ~QWaylandQuickItemPrivate
(qwaylandquickitem_p.h:98)
==1687982== by 0x4977CA7: ~QWaylandQuickShellSurfaceItemPrivate
(qwaylandquickshellsurfaceitem_p.h:56)
==1687982== by 0x4977CA7:
QWaylandQuickShellSurfaceItemPrivate::~QWaylandQuickShellSurfaceItemPrivate()
(qwaylandquickshellsurfaceitem_p.h:56)
==1687982== by 0xFA5A428: ~QQmlElement (qqmlprivate.h:144)
==1687982== by 0xFA5A428:
QQmlPrivate::QQmlElement<QWaylandQuickShellSurfaceItem>::~QQmlElement()
(qqmlprivate.h:144)
==1687982== by 0x59015FD: QObjectPrivate::deleteChildren() (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0x590D743: QObject::~QObject() (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0x63A5168: ??? (in
/usr/lib/x86_64-linux-gnu/libQt5Quick.so.5.15.6)
==1687982== by 0x59015FD: QObjectPrivate::deleteChildren() (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0x590D743: QObject::~QObject() (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0xFA68A6A: ~QWaylandQuickCompositor
(qwaylandquickcompositor.h:42)
==1687982== by 0xFA68A6A:
~QWaylandQuickCompositorQuickExtensionContainer
(qwaylandquickcompositorplugin.cpp:69)
==1687982== by 0xFA68A6A: ~QQmlElement (qqmlprivate.h:144)
==1687982== by 0xFA68A6A:
QQmlPrivate::QQmlElement<QWaylandQuickCompositorQuickExtensionContainer>::~QQmlElement()
(qqmlprivate.h:144)
==1687982== by 0x53F407D: QQmlApplicationEnginePrivate::cleanUp() (in
/usr/lib/x86_64-linux-gnu/libQt5Qml.so.5.15.6)
==1687982== Address 0xacd77a4 is 4 bytes inside a block of size 240 free'd
==1687982== at 0x484727F: free (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==1687982== by 0x4944F4B: ~QVector (qvector.h:73)
==1687982== by 0x4944F4B: ~QVector (qvector.h:73)
==1687982== by 0x4944F4B:
QWaylandOutputPrivate::~QWaylandOutputPrivate() (qwaylandoutput.cpp:104)
==1687982== by 0x494503C:
QWaylandOutputPrivate::~QWaylandOutputPrivate() (qwaylandoutput.cpp:104)
==1687982== by 0xFA5AE1E: ~QWaylandQuickOutput (qwaylandquickoutput.h:43)
==1687982== by 0xFA5AE1E: ~QQmlElement (qqmlprivate.h:144)
==1687982== by 0xFA5AE1E:
QQmlPrivate::QQmlElement<QWaylandQuickOutput>::~QQmlElement()
(qqmlprivate.h:144)
==1687982== by 0x59015FD: QObjectPrivate::deleteChildren() (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0x590D743: QObject::~QObject() (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0xFA68A6A: ~QWaylandQuickCompositor
(qwaylandquickcompositor.h:42)
==1687982== by 0xFA68A6A:
~QWaylandQuickCompositorQuickExtensionContainer
(qwaylandquickcompositorplugin.cpp:69)
==1687982== by 0xFA68A6A: ~QQmlElement (qqmlprivate.h:144)
==1687982== by 0xFA68A6A:
QQmlPrivate::QQmlElement<QWaylandQuickCompositorQuickExtensionContainer>::~QQmlElement()
(qqmlprivate.h:144)
==1687982== by 0x53F407D: QQmlApplicationEnginePrivate::cleanUp() (in
/usr/lib/x86_64-linux-gnu/libQt5Qml.so.5.15.6)
==1687982== by 0x53F40CB:
QQmlApplicationEngine::~QQmlApplicationEngine() (in
/usr/lib/x86_64-linux-gnu/libQt5Qml.so.5.15.6)
==1687982== by 0x11A30B: main (main.cpp:76)
==1687982== Block was alloc'd at
==1687982== at 0x4844899: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==1687982== by 0x56F42C1: QArrayData::allocate(unsigned long,
unsigned long, unsigned long, QFlags<QArrayData::AllocationOption>) (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0x49488DE: allocate (qarraydata.h:224)
==1687982== by 0x49488DE:
QVector<QWaylandSurfaceViewMapper>::realloc(int,
QFlags<QArrayData::AllocationOption>) (qvector.h:699)
==1687982== by 0x494642D: append (qvector.h:806)
==1687982== by 0x494642D:
QWaylandOutputPrivate::addView(QWaylandView*, QWaylandSurface*)
(qwaylandoutput.cpp:225)
==1687982== by 0x4949FB6: QWaylandView::setOutput(QWaylandOutput*)
(qwaylandview.cpp:200)
==1687982== by 0x4950744: QWaylandQuickItem::handleSurfaceChanged()
(qwaylandquickitem.cpp:950)
==1687982== by 0x590F6FE: ??? (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0x494CD91:
QWaylandQuickItem::setSurface(QWaylandSurface*) (qwaylandquickitem.cpp:422)
==1687982== by 0x12576A:
QuickEmbeddedShellIntegration::QuickEmbeddedShellIntegration(QWaylandQuickShellSurfaceItem*)
(embeddedshellextension.cpp:120)
==1687982== by 0x125947:
EmbeddedShellSurface::createIntegration(QWaylandQuickShellSurfaceItem*)
(embeddedshellextension.cpp:83)
==1687982== by 0x49774C5:
QWaylandQuickShellSurfaceItem::setShellSurface(QWaylandShellSurface*)
(qwaylandquickshellsurfaceitem.cpp:141)
==1687982== by 0x49BCBF2:
QWaylandQuickShellSurfaceItem::qt_metacall(QMetaObject::Call, int,
void**) (moc_qwaylandquickshellsurfaceitem.cpp:199)
==1687982==
==1687982== Invalid read of size 8
==1687982== at 0x49462D3: erase (qvector.h:914)
==1687982== by 0x49462D3: remove (qvector.h:478)
==1687982== by 0x49462D3: removeOne (qvector.h:185)
==1687982== by 0x49462D3:
QWaylandOutputPrivate::removeView(QWaylandView*, QWaylandSurface*)
(qwaylandoutput.cpp:233)
==1687982== by 0x4949B32: QWaylandView::~QWaylandView()
(qwaylandview.cpp:95)
==1687982== by 0x4949B6C: QWaylandView::~QWaylandView()
(qwaylandview.cpp:100)
==1687982== by 0x4977CA7: cleanup (qscopedpointer.h:60)
==1687982== by 0x4977CA7: ~QScopedPointer (qscopedpointer.h:107)
==1687982== by 0x4977CA7: ~QWaylandQuickItemPrivate
(qwaylandquickitem_p.h:98)
==1687982== by 0x4977CA7: ~QWaylandQuickShellSurfaceItemPrivate
(qwaylandquickshellsurfaceitem_p.h:56)
==1687982== by 0x4977CA7:
QWaylandQuickShellSurfaceItemPrivate::~QWaylandQuickShellSurfaceItemPrivate()
(qwaylandquickshellsurfaceitem_p.h:56)
==1687982== by 0xFA5A428: ~QQmlElement (qqmlprivate.h:144)
==1687982== by 0xFA5A428:
QQmlPrivate::QQmlElement<QWaylandQuickShellSurfaceItem>::~QQmlElement()
(qqmlprivate.h:144)
==1687982== by 0x59015FD: QObjectPrivate::deleteChildren() (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0x590D743: QObject::~QObject() (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0x63A5168: ??? (in
/usr/lib/x86_64-linux-gnu/libQt5Quick.so.5.15.6)
==1687982== by 0x59015FD: QObjectPrivate::deleteChildren() (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0x590D743: QObject::~QObject() (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0xFA68A6A: ~QWaylandQuickCompositor
(qwaylandquickcompositor.h:42)
==1687982== by 0xFA68A6A:
~QWaylandQuickCompositorQuickExtensionContainer
(qwaylandquickcompositorplugin.cpp:69)
==1687982== by 0xFA68A6A: ~QQmlElement (qqmlprivate.h:144)
==1687982== by 0xFA68A6A:
QQmlPrivate::QQmlElement<QWaylandQuickCompositorQuickExtensionContainer>::~QQmlElement()
(qqmlprivate.h:144)
==1687982== by 0x53F407D: QQmlApplicationEnginePrivate::cleanUp() (in
/usr/lib/x86_64-linux-gnu/libQt5Qml.so.5.15.6)
==1687982== Address 0xacd77c0 is 32 bytes inside a block of size 240 free'd
==1687982== at 0x484727F: free (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==1687982== by 0x4944F4B: ~QVector (qvector.h:73)
==1687982== by 0x4944F4B: ~QVector (qvector.h:73)
==1687982== by 0x4944F4B:
QWaylandOutputPrivate::~QWaylandOutputPrivate() (qwaylandoutput.cpp:104)
==1687982== by 0x494503C:
QWaylandOutputPrivate::~QWaylandOutputPrivate() (qwaylandoutput.cpp:104)
==1687982== by 0xFA5AE1E: ~QWaylandQuickOutput (qwaylandquickoutput.h:43)
==1687982== by 0xFA5AE1E: ~QQmlElement (qqmlprivate.h:144)
==1687982== by 0xFA5AE1E:
QQmlPrivate::QQmlElement<QWaylandQuickOutput>::~QQmlElement()
(qqmlprivate.h:144)
==1687982== by 0x59015FD: QObjectPrivate::deleteChildren() (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0x590D743: QObject::~QObject() (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0xFA68A6A: ~QWaylandQuickCompositor
(qwaylandquickcompositor.h:42)
==1687982== by 0xFA68A6A:
~QWaylandQuickCompositorQuickExtensionContainer
(qwaylandquickcompositorplugin.cpp:69)
==1687982== by 0xFA68A6A: ~QQmlElement (qqmlprivate.h:144)
==1687982== by 0xFA68A6A:
QQmlPrivate::QQmlElement<QWaylandQuickCompositorQuickExtensionContainer>::~QQmlElement()
(qqmlprivate.h:144)
==1687982== by 0x53F407D: QQmlApplicationEnginePrivate::cleanUp() (in
/usr/lib/x86_64-linux-gnu/libQt5Qml.so.5.15.6)
==1687982== by 0x53F40CB:
QQmlApplicationEngine::~QQmlApplicationEngine() (in
/usr/lib/x86_64-linux-gnu/libQt5Qml.so.5.15.6)
==1687982== by 0x11A30B: main (main.cpp:76)
==1687982== Block was alloc'd at
==1687982== at 0x4844899: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==1687982== by 0x56F42C1: QArrayData::allocate(unsigned long,
unsigned long, unsigned long, QFlags<QArrayData::AllocationOption>) (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0x49488DE: allocate (qarraydata.h:224)
==1687982== by 0x49488DE:
QVector<QWaylandSurfaceViewMapper>::realloc(int,
QFlags<QArrayData::AllocationOption>) (qvector.h:699)
==1687982== by 0x494642D: append (qvector.h:806)
==1687982== by 0x494642D:
QWaylandOutputPrivate::addView(QWaylandView*, QWaylandSurface*)
(qwaylandoutput.cpp:225)
==1687982== by 0x4949FB6: QWaylandView::setOutput(QWaylandOutput*)
(qwaylandview.cpp:200)
==1687982== by 0x4950744: QWaylandQuickItem::handleSurfaceChanged()
(qwaylandquickitem.cpp:950)
==1687982== by 0x590F6FE: ??? (in
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.6)
==1687982== by 0x494CD91:
QWaylandQuickItem::setSurface(QWaylandSurface*) (qwaylandquickitem.cpp:422)
==1687982== by 0x12576A:
QuickEmbeddedShellIntegration::QuickEmbeddedShellIntegration(QWaylandQuickShellSurfaceItem*)
(embeddedshellextension.cpp:120)
==1687982== by 0x125947:
EmbeddedShellSurface::createIntegration(QWaylandQuickShellSurfaceItem*)
(embeddedshellextension.cpp:83)
==1687982== by 0x49774C5:
QWaylandQuickShellSurfaceItem::setShellSurface(QWaylandShellSurface*)
(qwaylandquickshellsurfaceitem.cpp:141)
==1687982== by 0x49BCBF2:
QWaylandQuickShellSurfaceItem::qt_metacall(QMetaObject::Call, int,
void**) (moc_qwaylandquickshellsurfaceitem.cpp:199)
--
Florian Hänel
Geschäftsführer
echtzeit.solutions GmbH
Handelsregistergericht München HRB 231056
Ust-ID DE310379807
More information about the Interest
mailing list