| Summary: | plasmashell crashes after removing a panel with calendar plugins enabled in digital clock applet | ||
|---|---|---|---|
| Product: | [Plasma] plasmashell | Reporter: | Fushan Wen <qydwhotmail> |
| Component: | Calendar widget | Assignee: | Plasma Bugs List <plasma-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | Keywords: | drkonqi, regression |
| Priority: | NOR | ||
| Version First Reported In: | master | ||
| Target Milestone: | 1.0 | ||
| Platform: | openSUSE | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/plasma/plasma-workspace/commit/3bc87f03e5db18a9c67c93c6199eb6fab0fbc0c3 | Version Fixed/Implemented In: | 5.26 |
| Sentry Crash Report: | |||
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 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 |
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