Bug 507483 - Crash in ColumnView
Summary: Crash in ColumnView
Status: RESOLVED FIXED
Alias: None
Product: frameworks-kirigami
Classification: Frameworks and Libraries
Component: general (other bugs)
Version First Reported In: Master
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: Not decided
Assignee: kdelibs bugs
URL:
Keywords: regression
: 507584 508428 (view as bug list)
Depends on:
Blocks:
 
Reported: 2025-07-25 15:40 UTC by Tobias Fella
Modified: 2025-08-26 11:00 UTC (History)
5 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tobias Fella 2025-07-25 15:40:55 UTC
Bisecting leads me to 2a4d70202415192c9379034c44e18f3b864c9e05

To reproduce: 
- build merkuro and dependencies from source
- Run merkuro-calendar
- Settings > Configure Merkuro Calendar > Accounts > Add Accounts
- Click on any of the available options
- Crash

SOFTWARE/OS VERSIONS 
KDE Frameworks Version: master
Qt Version: 6.9.1 (from Fedora)
Comment 1 Tobias Fella 2025-08-19 13:12:42 UTC
*** Bug 508428 has been marked as a duplicate of this bug. ***
Comment 2 Marco Martin 2025-08-25 10:27:02 UTC
can you make it do a backtrace?
Comment 3 Tobias Fella 2025-08-25 11:05:51 UTC
Yes, sorry for forgetting to do so in the first place

#0  0x00007ffff4a7aca1 in QJSEngine::handle (this=0x0)
    at /home/tobias/kde/src/qtdeclarative/src/qml/jsapi/qjsengine.h:320
#1  QQmlTypeLoader::get<QQmlEngine, QQmlEnginePrivate, void> (engine=0x0)
    at /home/tobias/kde/src/qtdeclarative/src/qml/qml/qqmltypeloader_p.h:141
#2  QQmlComponentPrivate::prepareLoadFromModule (this=this@entry=0x3296ca0, uri=..., typeName=..., 
    mode=QQmlTypeLoader::PreferSynchronous)
    at /home/tobias/kde/src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1431
#3  0x00007ffff4a83106 in QQmlComponent::loadFromModule (this=this@entry=0x7fffbc006780, uri=..., typeName=..., 
    mode=mode@entry=QQmlComponent::PreferSynchronous)
    at /home/tobias/kde/src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1416
#4  0x00007fffc801a858 in QmlComponentsPool::QmlComponentsPool (this=0x7fffbc006770, engine=0x0)
    at /home/tobias/kde/usr/include/QtCore/qanystringview.h:133
#5  0x00007fffc801b0c6 in QmlComponentsPoolSingleton::instance (engine=<optimized out>)
    at /home/tobias/kde/src/kirigami/src/layouts/columnview.cpp:48
#6  0x00007fffc801eb7d in ContentItem::ensureSeparator (this=this@entry=0x302fb80, previousColumn=<optimized out>, 
    previousColumn@entry=0x0, column=<optimized out>, column@entry=0x304f690, nextColumn=<optimized out>, 
    nextColumn@entry=0x0) at /home/tobias/kde/src/kirigami/src/layouts/columnview.cpp:875
#7  0x00007fffc801f4f1 in ContentItem::layoutItems (this=0x302fb80)
    at /home/tobias/kde/src/kirigami/src/layouts/columnview.cpp:658
#8  0x00007ffff3d50057 in QtPrivate::QSlotObjectBase::call (this=0x2f56ec0, r=<optimized out>, a=0x7fffffffcb10)
    at /home/tobias/kde/src/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461
#9  doActivate<false> (sender=0x2a389a0, signal_index=<optimized out>, argv=0x7fffffffcb10, argv@entry=0x0)
    at /home/tobias/kde/src/qtbase/src/corelib/kernel/qobject.cpp:4297
#10 0x00007ffff3d46b79 in QMetaObject::activate (sender=sender@entry=0x2a389a0, 
    m=m@entry=0x7ffff639f700 <QQuickItem::staticMetaObject>, local_signal_index=local_signal_index@entry=16, 
    argv=argv@entry=0x0) at /home/tobias/kde/src/qtbase/src/corelib/kernel/qobject.cpp:4357
#11 0x00007ffff5c69167 in QQuickItem::visibleChanged (this=this@entry=0x2a389a0)
    at /home/tobias/kde/build/qtdeclarative/src/quick/Quick_autogen/include/moc_qquickitem.cpp:1031
#12 0x00007ffff5c7a598 in QQuickItemPrivate::setEffectiveVisibleRecur (this=this@entry=0x3040170, 
    newEffectiveVisible=<optimized out>) at /home/tobias/kde/src/qtdeclarative/src/quick/items/qquickitem.cpp:6721
#13 0x00007ffff5c7a5f7 in QQuickItemPrivate::setVisible (this=0x3040170, visible=<optimized out>)
    at /home/tobias/kde/src/qtdeclarative/src/quick/items/qquickitem.cpp:6599
#14 0x00007fffc801d67d in ContentItem::forgetItem (this=0x302fb80, item=0x304f690)
    at /home/tobias/kde/src/kirigami/src/layouts/columnview.cpp:840
#15 0x00007fffc8021608 in ContentItem::itemChange (this=0x302fb80, change=QQuickItem::ItemChildRemovedChange, 
    value=...) at /home/tobias/kde/src/kirigami/src/layouts/columnview.cpp:932
#16 0x00007ffff5c79eec in QQuickItemPrivate::itemChange (this=this@entry=0x2c90010, 
    change=change@entry=QQuickItem::ItemChildRemovedChange, data=...)
    at /home/tobias/kde/src/qtdeclarative/src/quick/items/qquickitem.cpp:6954
#17 0x00007ffff5c81dba in QQuickItemPrivate::removeChild (this=this@entry=0x2c90010, child=child@entry=0x304f690)
    at /home/tobias/kde/src/qtdeclarative/src/quick/items/qquickitem.cpp:3094
#18 0x00007ffff5c830a5 in QQuickItem::setParentItem (this=this@entry=0x304f690, parentItem=parentItem@entry=0x0)
    at /home/tobias/kde/src/qtdeclarative/src/quick/items/qquickitem.cpp:2803
#19 0x00007ffff5c8632d in QQuickItem::~QQuickItem (this=this@entry=0x304f690)
    at /home/tobias/kde/src/qtdeclarative/src/quick/items/qquickitem.cpp:2398
#20 0x00007ffff322dbda in QQuickControl::~QQuickControl (this=this@entry=0x304f690)
    at /home/tobias/kde/src/qtdeclarative/src/quicktemplates/qquickcontrol.cpp:955
#21 0x00007ffff325913f in QQuickPane::~QQuickPane (this=this@entry=0x304f690)
    at /home/tobias/kde/src/qtdeclarative/src/quicktemplates/qquickpane.cpp:270
#22 0x00007ffff3255f81 in QQuickPage::~QQuickPage (this=this@entry=0x304f690)
    at /home/tobias/kde/src/qtdeclarative/src/quicktemplates/qquickpage.cpp:224
--Type <RET> for more, q to quit, c to continue without paging--
#23 0x00007ffff32d1af9 in QQmlPrivate::QQmlElement<QQuickPage>::~QQmlElement (this=0x304f690) at /home/tobias/kde/src/qtdeclarative/src/qml/qml/qqmlprivate.h:104
#24 QQmlPrivate::QQmlElement<QQuickPage>::~QQmlElement (this=0x304f690) at /home/tobias/kde/src/qtdeclarative/src/qml/qml/qqmlprivate.h:104
#25 0x00007ffff3d40acc in QObject::event (this=<optimized out>, e=<optimized out>) at /home/tobias/kde/src/qtbase/src/corelib/kernel/qobject.cpp:1450
#26 0x00007ffff6e1d458 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x304f690, e=0x2cfab50) at /home/tobias/kde/src/qtbase/src/widgets/kernel/qapplication.cpp:3304
#27 0x00007ffff3ce42f8 in QCoreApplication::notifyInternal2 (receiver=0x304f690, event=0x2cfab50) at /home/tobias/kde/src/qtbase/src/corelib/kernel/qcoreapplication.cpp:1109
#28 0x00007ffff3ce451d in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at /home/tobias/kde/src/qtbase/src/corelib/kernel/qcoreapplication.cpp:1549
#29 0x00007ffff3ce799a in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x72be40) at /home/tobias/kde/src/qtbase/src/corelib/kernel/qcoreapplication.cpp:1904
#30 0x00007ffff400bea7 in postEventSourceDispatch (s=0x73a2f0) at /home/tobias/kde/src/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:246
#31 0x00007ffff14eb863 in g_main_dispatch (context=0x7fffcc000f00) at ../glib/gmain.c:3398
#32 g_main_context_dispatch_unlocked (context=0x7fffcc000f00) at ../glib/gmain.c:4249
#33 0x00007ffff14f47a8 in g_main_context_iterate_unlocked (context=context@entry=0x7fffcc000f00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4314
#34 0x00007ffff14f4953 in g_main_context_iteration (context=0x7fffcc000f00, may_block=1) at ../glib/gmain.c:4379
#35 0x00007ffff400b708 in QEventDispatcherGlib::processEvents (this=0x73d130, flags=...) at /home/tobias/kde/src/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:399
#36 0x00007ffff3cf0e13 in QEventLoop::exec (this=this@entry=0x7fffffffd2f0, flags=..., flags@entry=...) at /home/tobias/kde/src/qtbase/src/corelib/global/qflags.h:77
#37 0x00007ffff3cec565 in QCoreApplication::exec () at /home/tobias/kde/src/qtbase/src/corelib/kernel/qcoreapplication.cpp:1452
#38 0x00007ffff50be720 in QGuiApplication::exec () at /home/tobias/kde/src/qtbase/src/gui/kernel/qguiapplication.cpp:1973
#39 0x00007ffff6e1d3c9 in QApplication::exec () at /home/tobias/kde/src/qtbase/src/widgets/kernel/qapplication.cpp:2571
#40 0x000000000040ba13 in main (argc=<optimized out>, argv=<optimized out>) at /home/tobias/kde/src/merkuro/src/calendar/main.cpp:142
Comment 4 Bug Janitor Service 2025-08-25 15:10:28 UTC
A possibly relevant merge request was started @ https://invent.kde.org/frameworks/kirigami/-/merge_requests/1910
Comment 5 Marco Martin 2025-08-25 15:11:28 UTC
Tobias, can you try the merge request? since i didn't manage to reproduce the crash it's a blind fix, but if i understoor correctly what's happening there it should fix
Comment 6 Marco Martin 2025-08-25 15:32:30 UTC
Git commit 25a73630ee1494cb0e20b318a7f63084b1882a92 by Marco Martin.
Committed on 25/08/2025 at 15:32.
Pushed by mart into branch 'master'.

Don't relayout during item destruction

a reason forgetItem is called is when the item is being destroyed.
in that case is really important layoutITems doesn't get called until
the item is actually removed from the list of known items.

header::visiblechanged is connected to layoutitems to we need
to disconnect it before hiding the header

M  +5    -0    src/layouts/columnview.cpp

https://invent.kde.org/frameworks/kirigami/-/commit/25a73630ee1494cb0e20b318a7f63084b1882a92
Comment 7 Tobias Fella 2025-08-26 11:00:50 UTC
*** Bug 507584 has been marked as a duplicate of this bug. ***