Bug 476361 - Kirigami.OverlaySheet crashes a program when its parent window is closed
Summary: Kirigami.OverlaySheet crashes a program when its parent window is closed
Status: RESOLVED FIXED
Alias: None
Product: frameworks-kirigami
Classification: Frameworks and Libraries
Component: general (show other bugs)
Version: Master
Platform: Compiled Sources Other
: NOR crash
Target Milestone: Not decided
Assignee: kdelibs bugs
URL:
Keywords: drkonqi, qt6, regression
: 466920 (view as bug list)
Depends on:
Blocks:
 
Reported: 2023-10-31 11:23 UTC by Fushan Wen
Modified: 2024-09-09 06:46 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In: Qt 6.9
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Fushan Wen 2023-10-31 11:23:23 UTC
SUMMARY
Kirigami.OverlaySheet without a parent set still happens when its parent window is closed while the sheet is opened.


STEPS TO REPRODUCE
1. Open OverlaySheet without a parent (e.g. the one in KNewStuff)
2. While the sheet is opened, close the parent window
3. Boom

OBSERVED RESULT
Crash

EXPECTED RESULT
No crash

SOFTWARE/OS VERSIONS
Windows: 
macOS: 
Linux/KDE Plasma: 
(available in About System)
KDE Plasma Version: 
KDE Frameworks Version: kirigmi at 4e83a29fd4318ace22899c5f85405e1d43bb6696
Qt Version: 6.6.0

ADDITIONAL INFORMATION
(gdb) bt
#0  QQmlPropertyCache::propertyCount() const (this=0x0)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/build/include/QtQml/6.6.0/QtQml/private/../../../../../../src/qml/qml/qqmlpropertycache_p.h:436
#1  QQmlPropertyCache::property(int) const (index=<optimized out>, this=0x0)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/build/include/QtQml/6.6.0/QtQml/private/../../../../../../src/qml/qml/qqmlpropertycache_p.h:334
#2  QQmlInterceptorMetaObject::doIntercept(QMetaObject::Call, int, void**)
    (this=this@entry=0x7fc794015f40, c=c@entry=QMetaObject::WriteProperty, id=id@entry=10, a=a@entry=0x7ffd6c985560)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/qml/qml/qqmlvmemetaobject.cpp:279
#3  0x00007fc7a91928fd in QQmlInterceptorMetaObject::intercept(QMetaObject::Call, int, void**)
    (a=0x7ffd6c985560, id=10, c=QMetaObject::WriteProperty, this=0x7fc794015f40)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/qml/qml/qqmlvmemetaobject_p.h:126
#4  QQmlVMEMetaObject::metaCall(QObject*, QMetaObject::Call, int, void**)
    (this=0x7fc794015f40, o=<optimized out>, c=QMetaObject::WriteProperty, _id=10, a=0x7ffd6c985560)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/qml/qml/qqmlvmemetaobject.cpp:686
#5  0x00007fc7a9078eba in QQmlPropertyData::doMetacall<(QMetaObject::Call)2>(QObject*, int, void**) const
    (this=<optimized out>, argv=0x7ffd6c985560, idx=<optimized out>, object=<optimized out>)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/build/include/QtQml/6.6.0/QtQml/private/../../../../../../src/qml/qml/qqmlpropertydata_p.h:320
#6  QQmlPropertyData::writeProperty(QObject*, void*, QFlags<QQmlPropertyData::WriteFlag>) const
    (this=<optimized out>, target=<optimized out>, value=<optimized out>, flags=...)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/build/include/QtQml/6.6.0/QtQml/private/../../../../../../src/qml/qml/qqmlpropertydata_p.h:340
#7  0x00007fc7a912e089 in tryConvertAndAssign
    (isUrl=<optimized out>, variantMetaType=..., propertyMetaType=..., flags=..., value=<optimized out>, property=<optimized out>, object=<optimized out>)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/qml/qml/qqmlproperty.cpp:1416
#8  QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlRefPointer<QQmlContextData> const&, QFlags<QQmlPropertyData::WriteFlag>) (object=0x7fc79400b5a0, property=..., value=..., context=..., flags=...)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/qml/qml/qqmlproperty.cpp:1555
#9  0x00007fc7a912f86e in QQmlPropertyPrivate::writeValueProperty(QObject*, QQmlPropertyData const&, QQmlPropertyData const&, QVariant const&, QQmlRefPointer<QQmlContextData> const&, QFlags<QQmlPropertyData::WriteFlag>)
    (object=<optimized out>, core=<optimized out>, valueTypeData=<optimized out>, value=..., context=..., flags=...)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/qml/qml/qqmlproperty.cpp:1324
#10 0x00007fc7a912f8dd in QQmlPropertyPrivate::writeValueProperty(QVariant const&, QFlags<QQmlPropertyData::WriteFlag>)
    (this=0x489fde0, value=..., flags=...) at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/qml/qml/qqmlproperty.cpp:1269
#11 0x00007fc7a912f9b1 in QQmlPropertyPrivate::write(QQmlProperty const&, QVariant const&, QFlags<QQmlPropertyData::WriteFlag>)
    (that=..., value=..., flags=..., flags@entry=...) at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/qml/qml/qqmlproperty.cpp:1860
#12 0x00007fc7a912f9c7 in QQmlProperty::write(QVariant const&) const (this=this@entry=0x7ffd6c9857a0, value=...) at /usr/include/qt6/QtCore/qflags.h:73
#13 0x00007fc7a912fa05 in QQmlProperty::write(QObject*, QString const&, QVariant const&) (object=<optimized out>, name=..., value=...)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/qml/qml/qqmlproperty.cpp:1793
#14 0x00007fc7a2d374dc in QQuickPopupPrivate::hideOverlay() (this=0x4e70090)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/quicktemplates/qquickpopup.cpp:928
#15 QQuickPopupPrivate::hideOverlay() (this=0x4e70090) at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/quicktemplates/qquickpopup.cpp:924
#16 0x00007fc7a2d3732c in QQuickPopupPrivate::prepareExitTransition() (this=0x4e70090)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/quicktemplates/qquickpopup.cpp:596
#17 0x00007fc7a2d393ce in QQuickPopupTransitionManager::transitionExit() (this=0x4e70210)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/quicktemplates/qquickpopup.cpp:962
#18 0x00007fc7a2d3df99 in QQuickPopup::setParentItem(QQuickItem*) (this=0x3df1620, parent=0x0)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/quicktemplates/qquickpopup.cpp:1779
#19 0x00007fc7a960a134 in QQuickItemPrivate::notifyChangeListeners<void (QQuickItemChangeListener::*)(QQuickItem*), QQuickItem*>(QFlags<QQuickItemPrivate::ChangeType>, void (QQuickItemChangeListener::*&&)(QQuickItem*), QQuickItem*&&) (function=<optimized out>, changeTypes=..., this=0x2e90650)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/build/include/QtQuick/6.6.0/QtQuick/private/../../../../../../src/quick/items/qquickitem_p.h:355
#20 QQuickItem::~QQuickItem() (this=0x56fa910, this=<optimized out>)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/quick/items/qquickitem.cpp:2340
#21 0x00007fc7a97febe5 in QQmlPrivate::QQmlElement<QQuickItem>::~QQmlElement() (this=0x56fa910, this=<optimized out>)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/build/include/QtQml/../../../src/qml/qml/qqmlprivate.h:99
#22 QQmlPrivate::QQmlElement<QQuickItem>::~QQmlElement() (this=0x56fa910, this=<optimized out>)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/build/include/QtQml/../../../src/qml/qml/qqmlprivate.h:99
#23 0x00007fc7a6dcc333 in QObjectPrivate::deleteChildren() (this=this@entry=0x430eaa0)
    at /usr/src/debug/qtbase-everywhere-src-6.6.0/src/corelib/kernel/qobject.cpp:2206
#24 0x00007fc7a6dd00e8 in QObject::~QObject() (this=<optimized out>, this=<optimized out>)
    at /usr/src/debug/qtbase-everywhere-src-6.6.0/src/corelib/kernel/qobject.cpp:1159
#25 0x00007fc7a97fe855 in QQmlPrivate::QQmlElement<QQuickMouseArea>::~QQmlElement() (this=0x5c033d0, this=<optimized out>)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/build/include/QtQml/../../../src/qml/qml/qqmlprivate.h:99
#26 QQmlPrivate::QQmlElement<QQuickMouseArea>::~QQmlElement() (this=0x5c033d0, this=<optimized out>)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/build/include/QtQml/../../../src/qml/qml/qqmlprivate.h:99
#27 0x00007fc7a6dcc333 in QObjectPrivate::deleteChildren() (this=this@entry=0x4308ab0)
    at /usr/src/debug/qtbase-everywhere-src-6.6.0/src/corelib/kernel/qobject.cpp:2206
#28 0x00007fc7a6dd00e8 in QObject::~QObject() (this=<optimized out>, this=<optimized out>)
    at /usr/src/debug/qtbase-everywhere-src-6.6.0/src/corelib/kernel/qobject.cpp:1159
#29 0x00007fc7a2dadfb5 in QQmlPrivate::QQmlElement<QQuickPage>::~QQmlElement() (this=0x7fc794047440, this=<optimized out>)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/build/include/QtQml/../../../src/qml/qml/qqmlprivate.h:99
#30 QQmlPrivate::QQmlElement<QQuickPage>::~QQmlElement() (this=0x7fc794047440, this=<optimized out>)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/build/include/QtQml/../../../src/qml/qml/qqmlprivate.h:99
#31 0x00007fc7a8ff9a91 in QV4::QObjectWrapper::destroyObject(bool) (this=<optimized out>, lastCall=true)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/qml/jsruntime/qv4qobjectwrapper.cpp:1395
#32 0x00007fc7a906963b in QV4::MemoryManager::sweep(bool, void (*)(char const*))
    (this=this@entry=0x26fc120, lastSweep=lastSweep@entry=true, classCountPtr=classCountPtr@entry=0x0)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/qml/memory/qv4mm.cpp:860
#33 0x00007fc7a906b85c in QV4::MemoryManager::~MemoryManager() (this=0x26fc120, this=<optimized out>)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/qml/memory/qv4mm.cpp:1112
#34 0x00007fc7a8f99c03 in QV4::ExecutionEngine::~ExecutionEngine() (this=0x4f36820, this=<optimized out>)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/qml/jsruntime/qv4engine.cpp:860
#35 0x00007fc7a8f6bdbd in QJSEngine::~QJSEngine() (this=0x7fc7940149b0, this=<optimized out>)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/qml/jsapi/qjsengine.cpp:376
#36 0x00007fc7a90b43e9 in QQmlEngine::~QQmlEngine() (this=0x7fc7940149b0, this=<optimized out>)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/qml/qml/qqmlengine.cpp:661
#37 0x00007fc7a6dcc333 in QObjectPrivate::deleteChildren() (this=this@entry=0x4c62520)
    at /usr/src/debug/qtbase-everywhere-src-6.6.0/src/corelib/kernel/qobject.cpp:2206
#38 0x00007fc7a6dd00e8 in QObject::~QObject() (this=<optimized out>, this=<optimized out>)
    at /usr/src/debug/qtbase-everywhere-src-6.6.0/src/corelib/kernel/qobject.cpp:1159
#39 0x00007fc7a76372ee in QWindow::~QWindow() (this=<optimized out>, this=<optimized out>)
    at /usr/src/debug/qtbase-everywhere-src-6.6.0/src/gui/kernel/qwindow.cpp:201
#40 0x00007fc7a96b02ea in QQuickWindow::~QQuickWindow() (this=<optimized out>, this=<optimized out>)
    at /usr/src/debug/qtdeclarative-everywhere-src-6.6.0/src/quick/items/qquickwindow.cpp:1134
#41 0x000000000043522a in ContainmentConfigView::~ContainmentConfigView() (this=0x2ecf1a0, __in_chrg=<optimized out>)
    at /home/qydw/kde/src/plasma-workspace/shell/containmentconfigview.cpp:56
#42 ContainmentConfigView::~ContainmentConfigView() (this=0x2ecf1a0, __in_chrg=<optimized out>)
    at /home/qydw/kde/src/plasma-workspace/shell/containmentconfigview.cpp:56
#43 0x00007fc7a6dcaf57 in QObject::event(QEvent*) (this=0x2ecf1a0, e=0x2f0e6a0)
    at /usr/src/debug/qtbase-everywhere-src-6.6.0/src/corelib/kernel/qobject.cpp:1424
#44 0x00007fc7a83c089e in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib64/libQt6Widgets.so.6
#45 0x00007fc7a6d88728 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x2ecf1a0, event=0x2f0e6a0)
    at /usr/src/debug/qtbase-everywhere-src-6.6.0/src/corelib/kernel/qcoreapplication.cpp:1118
#46 0x00007fc7a6d88769 in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>)
    at /usr/src/debug/qtbase-everywhere-src-6.6.0/src/corelib/kernel/qcoreapplication.cpp:1536
#47 0x00007fc7a6d88a87 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x1598f70)
    at /usr/src/debug/qtbase-everywhere-src-6.6.0/src/corelib/kernel/qcoreapplication.cpp:1898
#48 0x00007fc7a6fac903 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x1624020)
    at /usr/src/debug/qtbase-everywhere-src-6.6.0/src/corelib/kernel/qeventdispatcher_glib.cpp:243
#49 0x00007fc7a5b13ef0 in  () at /lib64/libglib-2.0.so.0
#50 0x00007fc7a5b15b18 in  () at /lib64/libglib-2.0.so.0
#51 0x00007fc7a5b161cc in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#52 0x00007fc7a6fab0fc in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x16351d0, flags=...)
    at /usr/src/debug/qtbase-everywhere-src-6.6.0/src/corelib/kernel/qeventdispatcher_glib.cpp:393
#53 0x00007fc7a6d93e8b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7ffd6c986210, flags=...)
    at /usr/src/debug/qtbase-everywhere-src-6.6.0/build/include/QtCore/../../../src/corelib/global/qflags.h:34
#54 0x00007fc7a6d8bf56 in QCoreApplication::exec() ()
    at /usr/src/debug/qtbase-everywhere-src-6.6.0/build/include/QtCore/../../../src/corelib/global/qflags.h:74
#55 0x0000000000427dfb in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/qydw/kde/src/plasma-workspace/shell/main.cpp:236
Comment 1 Fushan Wen 2023-10-31 11:34:08 UTC
*** Bug 466920 has been marked as a duplicate of this bug. ***
Comment 2 Nate Graham 2023-11-01 17:48:35 UTC
Which app are you seeing this in? Can't reproduce in Discover, but its OverlaySheet instances to manually re-parent themselves.