Bug 454846 - plasmashell crashes after removing a panel with calendar plugins enabled in digital clock applet
Summary: plasmashell crashes after removing a panel with calendar plugins enabled in d...
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Calendar widget (other bugs)
Version First Reported In: master
Platform: openSUSE Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: drkonqi, regression
Depends on:
Blocks:
 
Reported: 2022-06-04 17:19 UTC by Fushan Wen
Modified: 2022-06-14 11:15 UTC (History)
0 users

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Fushan Wen 2022-06-04 17:19:04 UTC
SUMMARY
When there are 2 panels and both of them have digital clock applets, and at least one calendar plugin is enabled, plasmashell will often crash after removing a panel .


STEPS TO REPRODUCE
1. Create two default panels
2. Enable one calendar plugin
3. Remove one panel

OBSERVED RESULT
Crash

EXPECTED RESULT
No crash

ADDITIONAL INFORMATION
(gdb) bt
#0  __GI___pthread_sigmask (how=1, newmask=<optimized out>, oldmask=0x0) at pthread_sigmask.c:43
#1  0x00007fe62ded79dd in __GI___sigprocmask (how=<optimized out>, set=<optimized out>, oset=<optimized out>) at ../sysdeps/unix/sysv/linux/sigprocmask.c:25
#2  0x00007fe630c2a88b in KCrash::setCrashHandler(void (*)(int)) (handler=handler@entry=0x0)
    at /usr/src/debug/kcrash-5.95.0git.20220514T104027~ee91713-ku.1.3.x86_64/src/kcrash.cpp:415
#3  0x00007fe630c2cda6 in KCrash::defaultCrashHandler(int) (sig=11) at /usr/src/debug/kcrash-5.95.0git.20220514T104027~ee91713-ku.1.3.x86_64/src/kcrash.cpp:632
#4  0x00007fe62ded77c0 in <signal handler called> () at /lib64/libc.so.6
#5  QList<CalendarEvents::CalendarEventsPlugin*>::QList(QList<CalendarEvents::CalendarEventsPlugin*> const&) (l=..., this=0x7ffe01d955d0)
    at /usr/include/qt5/QtCore/qlist.h:853
#6  EventPluginsManager::plugins() const (this=0x3ce12b0) at /mnt/data/home/qydw/Develop/KDE/Plasma/plasma-workspace/components/calendar/eventpluginsmanager.cpp:272
#7  0x00007fe5dc05c1ca in DaysModel::update() (this=0x68f4150) at /mnt/data/home/qydw/Develop/KDE/Plasma/plasma-workspace/components/calendar/daysmodel.cpp:180
#8  DaysModel::update() (this=0x68f4150) at /mnt/data/home/qydw/Develop/KDE/Plasma/plasma-workspace/components/calendar/daysmodel.cpp:162
#9  0x00007fe5dc05b33b in Calendar::updateData() (this=this@entry=0x68f3fe0)
    at /mnt/data/home/qydw/Develop/KDE/Plasma/plasma-workspace/components/calendar/calendar.cpp:316
#10 0x00007fe5dc05b774 in Calendar::setFirstDayOfWeek(int) (this=0x68f3fe0, day=<optimized out>)
    at /mnt/data/home/qydw/Develop/KDE/Plasma/plasma-workspace/components/calendar/calendar.cpp:179
#11 0x00007fe6302c82be in QQmlPropertyData::writeProperty(QObject*, void*, QFlags<QQmlPropertyData::WriteFlag>) const
    (flags=..., value=0x7ffe01d956ec, target=<optimized out>, this=<optimized out>)
    at ../../include/QtQml/5.15.2/QtQml/private/../../../../../../src/qml/qml/qqmlpropertydata_p.h:375
#12 GenericBinding<2>::doStore<int>(int, QQmlPropertyData const*, QFlags<QQmlPropertyData::WriteFlag>) const
    (flags=..., pd=<optimized out>, value=<optimized out>, this=0x6933c50)
    at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlbinding.cpp:342
#13 GenericBinding<2>::write(QV4::Value const&, bool, QFlags<QQmlPropertyData::WriteFlag>) (this=0x6933c50, result=..., isUndefined=<optimized out>, flags=...)
    at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlbinding.cpp:310
--Type <RET> for more, q to quit, c to continue without paging--c
#14 0x00007fe6302c8ea7 in QQmlNonbindingBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&, QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) (this=0x6933c50, watcher=..., flags=..., scope=...) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlbinding.cpp:258
#15 0x00007fe6302c6ac4 in QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) (this=0x6933c50, flags=...) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlbinding.cpp:194
#16 0x00007fe63026c846 in QQmlContextData::refreshExpressionsRecursive(QQmlJavaScriptExpression*) (this=<optimized out>, expression=0x6933c50) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:723
#17 0x00007fe63026c831 in QQmlContextData::refreshExpressionsRecursive(QQmlJavaScriptExpression*) (this=<optimized out>, expression=0x6933ce0) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:720
#18 0x00007fe63026c831 in QQmlContextData::refreshExpressionsRecursive(QQmlJavaScriptExpression*) (this=<optimized out>, expression=0x6933fe0) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:720
#19 0x00007fe63026c831 in QQmlContextData::refreshExpressionsRecursive(QQmlJavaScriptExpression*) (this=<optimized out>, expression=0x6934070) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:720
#20 0x00007fe63026c831 in QQmlContextData::refreshExpressionsRecursive(QQmlJavaScriptExpression*) (this=<optimized out>, expression=0x6934100) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:720
#21 0x00007fe63026c831 in QQmlContextData::refreshExpressionsRecursive(QQmlJavaScriptExpression*) (this=<optimized out>, expression=0x6934190) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:720
#22 0x00007fe63026c831 in QQmlContextData::refreshExpressionsRecursive(QQmlJavaScriptExpression*) (this=<optimized out>, expression=0x6934480) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:720
#23 0x00007fe63026c831 in QQmlContextData::refreshExpressionsRecursive(QQmlJavaScriptExpression*) (this=<optimized out>, expression=0x6934510) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:720
#24 0x00007fe63026c831 in QQmlContextData::refreshExpressionsRecursive(QQmlJavaScriptExpression*) (this=<optimized out>, expression=0x69345a0) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:720
#25 0x00007fe63026c831 in QQmlContextData::refreshExpressionsRecursive(QQmlJavaScriptExpression*) (this=<optimized out>, expression=0x6934630) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:720
#26 0x00007fe63026c831 in QQmlContextData::refreshExpressionsRecursive(QQmlJavaScriptExpression*) (this=<optimized out>, expression=0x5d608d0) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:720
#27 0x00007fe63026c831 in QQmlContextData::refreshExpressionsRecursive(QQmlJavaScriptExpression*) (this=<optimized out>, expression=0x697c0f0) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:720
#28 0x00007fe63026c831 in QQmlContextData::refreshExpressionsRecursive(QQmlJavaScriptExpression*) (this=<optimized out>, expression=0x6c2a840) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:720
#29 0x00007fe63026c831 in QQmlContextData::refreshExpressionsRecursive(QQmlJavaScriptExpression*) (this=<optimized out>, expression=0x6c2a910) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:720
#30 0x00007fe63026c831 in QQmlContextData::refreshExpressionsRecursive(QQmlJavaScriptExpression*) (this=this@entry=0x7fe62400c3a0, expression=0x6c2a9b0) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:720
#31 0x00007fe63026cfe6 in QQmlContextData::refreshExpressionsRecursive(bool) (this=0x7fe62400c3a0, isGlobal=false) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:752
#32 0x00007fe63026d080 in QQmlContextData::refreshExpressionsRecursive(bool) (this=0x7fe62400dfc0, isGlobal=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:762
#33 0x00007fe63026d0e7 in QQmlContextData::refreshExpressionsRecursive(bool) (this=0x3b18a10, isGlobal=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:742
#34 0x00007fe63026d2f1 in QQmlContextData::refreshExpressions() (this=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlcontext.cpp:800
#35 0x00007fe63024ffd8 in QQmlEngine::retranslate() (this=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.2+kde43-ku.2.1.x86_64/src/qml/qml/qqmlengine.cpp:1430
#36 0x00007fe62e6ec28e in QObject::event(QEvent*) (this=0x267c910, e=0x7fe618a3d0d0) at kernel/qobject.cpp:1314
#37 0x00007fe62f460b0f in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x267c910, e=0x7fe618a3d0d0) at kernel/qapplication.cpp:3632
#38 0x00007fe62e6bfb5a in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x267c910, event=0x7fe618a3d0d0) at kernel/qcoreapplication.cpp:1064
#39 0x00007fe62e6c2b97 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x22fa9a0) at kernel/qcoreapplication.cpp:1821
#40 0x00007fe62e717c33 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x2406760) at kernel/qeventdispatcher_glib.cpp:277
#41 0x00007fe62ca42ea0 in g_main_dispatch (context=0x7fe624005010) at ../glib/gmain.c:3417
#42 g_main_context_dispatch (context=0x7fe624005010) at ../glib/gmain.c:4135
#43 0x00007fe62ca43258 in g_main_context_iterate (context=context@entry=0x7fe624005010, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4211
#44 0x00007fe62ca432ec in g_main_context_iteration (context=0x7fe624005010, may_block=1) at ../glib/gmain.c:4276
#45 0x00007fe62e7172b4 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x240c720, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#46 0x00007fe62e6be55b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffe01d96040, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#47 0x00007fe62e6c6820 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#48 0x00007fe62eb1061c in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1867
#49 0x00007fe62f460a85 in QApplication::exec() () at kernel/qapplication.cpp:2824
#50 0x0000000000423714 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /mnt/data/home/qydw/Develop/KDE/Plasma/plasma-workspace/shell/main.cpp:240
Comment 2 Fushan Wen 2022-06-04 17:32:13 UTC
Git commit 42c860a928084d2f2670d2098271a08d899b885c by Fushan Wen.
Committed on 04/06/2022 at 17:30.
Pushed by fusionfuture into branch 'master'.

calendar: don't use unique_ptr for QML-owned object

This fixes a crash when removing the digital applet from a new panel.
FIXED-IN: 5.26

M  +9    -8    components/calendar/daysmodel.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/42c860a928084d2f2670d2098271a08d899b885c
Comment 3 Marco Martin 2022-06-14 11:15:10 UTC
Git commit 3bc87f03e5db18a9c67c93c6199eb6fab0fbc0c3 by Marco Martin, on behalf of Fushan Wen.
Committed on 14/06/2022 at 09:31.
Pushed by fusionfuture into branch 'master'.

calendar: use normal type for EventPluginsManager, don't use singleton

It fixes that when there are multiple calendar applets, each applet
doesn't have its own EventPluginsManager.
FIXED-IN: 5.26

M  +7    -1    applets/digital-clock/package/contents/config/config.qml
M  +7    -9    applets/digital-clock/package/contents/ui/CalendarView.qml
M  +9    -6    applets/digital-clock/package/contents/ui/configCalendar.qml
M  +0    -4    applets/digital-clock/package/contents/ui/main.qml
M  +1    -9    components/calendar/calendarplugin.cpp
M  +4    -0    components/calendar/daysmodel.cpp
M  +5    -1    components/calendar/qml/MonthView.qml

https://invent.kde.org/plasma/plasma-workspace/commit/3bc87f03e5db18a9c67c93c6199eb6fab0fbc0c3