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

            Bug ID: 476361
           Summary: Kirigami.OverlaySheet crashes a program when its
                    parent window is closed
    Classification: Frameworks and Libraries
           Product: frameworks-kirigami
           Version: Master
          Platform: Compiled Sources
                OS: Other
            Status: REPORTED
          Keywords: drkonqi, qt6, regression
          Severity: crash
          Priority: NOR
         Component: general
          Assignee: kdelibs-b...@kde.org
          Reporter: qydwhotm...@gmail.com
                CC: m...@ratijas.tk, notm...@gmail.com
  Target Milestone: Not decided

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

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

Reply via email to