Bug 302106

Summary: Plasma crash on Locale change
Product: [Plasma] plasma4 Reporter: Janek Bevendorff <kde>
Component: widget-clockAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED FIXED    
Severity: crash CC: lukas
Priority: NOR    
Version: 4.8.90 (beta2)   
Target Milestone: ---   
Platform: Gentoo Packages   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=299237
Latest Commit: Version Fixed In: 4.9

Description Janek Bevendorff 2012-06-18 09:39:58 UTC
I have three clock widgets. One analog clock on the desktop and two digital clock widgets in the panels on my two monitors.
When I go to the System Settings, open the Locale settings, change something (e.g. the language), click "Apply" and wait up to half a minute, plasma crashes.
When I click one of the clock widgets to bring up the calendar instead of waiting, Plasma crashes immediately.

Unfortunately, I wasn't able to get a three star stack trace from Dr Konqi, but this is what I have:

Application: Plasma Desktop Shell (kdeinit4), signal: Segmentation fault
[KCrash Handler]
#6  0x0000000000000051 in ?? ()
#7  0x00007f352f9efa3e in Plasma::CalendarTable::resizeEvent(QGraphicsSceneResizeEvent*) () from /usr/lib64/libplasmaclock.so.4
#8  0x00007f3550019c17 in QGraphicsWidget::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#9  0x00007f354fa01b54 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#10 0x00007f354fa069d3 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#11 0x00007f355165e806 in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5
#12 0x00007f355087291c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#13 0x00007f355001b14a in QGraphicsWidget::setGeometry(QRectF const&) () from /usr/lib64/qt4/libQtGui.so.4
#14 0x00007f355002793c in ?? () from /usr/lib64/qt4/libQtGui.so.4
#15 0x00007f354ffdd343 in QGraphicsLinearLayout::setGeometry(QRectF const&) () from /usr/lib64/qt4/libQtGui.so.4
#16 0x00007f355002793c in ?? () from /usr/lib64/qt4/libQtGui.so.4
#17 0x00007f354ffdd343 in QGraphicsLinearLayout::setGeometry(QRectF const&) () from /usr/lib64/qt4/libQtGui.so.4
#18 0x00007f354ffdb13a in QGraphicsLayout::widgetEvent(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#19 0x00007f3550019b1a in QGraphicsWidget::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#20 0x00007f354fa01b54 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#21 0x00007f354fa069d3 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#22 0x00007f355165e806 in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5
#23 0x00007f355087291c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#24 0x00007f355001b14a in QGraphicsWidget::setGeometry(QRectF const&) () from /usr/lib64/qt4/libQtGui.so.4
#25 0x00007f3550018db8 in QGraphicsWidget::resize(QSizeF const&) () from /usr/lib64/qt4/libQtGui.so.4
#26 0x00007f35415eb820 in Plasma::Dialog::resizeEvent(QResizeEvent*) () from /usr/lib64/libplasma.so.3
#27 0x00007f354fa5221a in QWidget::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#28 0x00007f354fa01b54 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#29 0x00007f354fa069d3 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#30 0x00007f355165e806 in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5
#31 0x00007f355087291c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#32 0x00007f354fa4ccd5 in QWidgetPrivate::sendPendingMoveAndResizeEvents(bool, bool) () from /usr/lib64/qt4/libQtGui.so.4
#33 0x00007f354fa547d1 in QWidgetPrivate::show_helper() () from /usr/lib64/qt4/libQtGui.so.4
#34 0x00007f354fa54bf2 in QWidget::setVisible(bool) () from /usr/lib64/qt4/libQtGui.so.4
#35 0x00007f354160f491 in Plasma::PopupAppletPrivate::showDialog() () from /usr/lib64/libplasma.so.3
#36 0x00007f355088b599 in QObject::event(QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#37 0x00007f3550019b5b in QGraphicsWidget::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#38 0x00007f354fa01b54 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#39 0x00007f354fa069d3 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#40 0x00007f355165e806 in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5
#41 0x00007f355087291c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#42 0x00007f35508a35d2 in ?? () from /usr/lib64/qt4/libQtCore.so.4
#43 0x00007f35508a100d in ?? () from /usr/lib64/qt4/libQtCore.so.4
#44 0x00007f354c23943a in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#45 0x00007f354c239800 in ?? () from /usr/lib64/libglib-2.0.so.0
#46 0x00007f354c2398c4 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#47 0x00007f35508a17cf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#48 0x00007f354faa471e in ?? () from /usr/lib64/qt4/libQtGui.so.4
#49 0x00007f3550871702 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#50 0x00007f3550871957 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#51 0x00007f35508764b5 in QCoreApplication::exec() () from /usr/lib64/qt4/libQtCore.so.4
#52 0x00007f3538633e43 in kdemain () from /usr/lib64/libkdeinit4_plasma-desktop.so
#53 0x0000000000408a24 in launch(int, char const*, char const*, char const*, int, char const*, bool, char const*, bool, char const*) ()
#54 0x0000000000409b06 in handle_launcher_request(int, char const*) [clone .isra.15] ()
#55 0x000000000040a02f in handle_requests(int) ()
#56 0x0000000000405a2e in main ()



I guess this issue is related to Bug 299237, but it is a different crash.

Reproducible: Always

Steps to Reproduce:
1. Add a digital clock widget to your panel
2. Open the System Settings and change something (doesn't really matter what)
3. Click the clock widget to bring up the calendar table

Actual Results:  
Plasma crashes.
Comment 1 Lukáš Tinkl 2012-06-18 10:08:29 UTC
I need:
- your KDE version
- full backtrace
Comment 2 Janek Bevendorff 2012-06-18 10:10:11 UTC
For the KDE version look at the version field.
And concerning th trace: as I said, this is the only trace I get. When starting plasma from the console I don't get a better output either.
Comment 3 Janek Bevendorff 2012-06-19 14:20:43 UTC
I just installed all available debug symbols for plasma and Qt, this is what I get now:

Application: Plasma Desktop Shell (plasma-desktop), signal: Segmentation fault
[KCrash Handler]
#6  0x0000000000000041 in ?? ()
#7  0x00007f49818210f9 in Plasma::CalendarTable::resizeEvent (this=0x2599680, event=<optimized out>) at /var/tmp/portage/kde-base/libplasmaclock-4.8.90/work/libplasmaclock-4.8.90/libs/plasmaclock/calendartable.cpp:1058
#8  0x00007f499f75ac17 in QGraphicsWidget::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#9  0x00007f499f142b54 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#10 0x00007f499f1479d3 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#11 0x00007f49a0cde5dd in KApplication::notify (this=0xd62580, receiver=0x2599680, event=0x7fffcc639cf0) at /var/tmp/portage/kde-base/kdelibs-4.8.90/work/kdelibs-4.8.90/kdeui/kernel/kapplication.cpp:311
#12 0x00007f499ffb291c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#13 0x00007f499f75c14a in QGraphicsWidget::setGeometry(QRectF const&) () from /usr/lib64/qt4/libQtGui.so.4
#14 0x00007f499f76893c in QGridLayoutEngine::setGeometries(QLayoutStyleInfo const&, QRectF const&) () from /usr/lib64/qt4/libQtGui.so.4
#15 0x00007f499f71e343 in QGraphicsLinearLayout::setGeometry(QRectF const&) () from /usr/lib64/qt4/libQtGui.so.4
#16 0x00007f499f76893c in QGridLayoutEngine::setGeometries(QLayoutStyleInfo const&, QRectF const&) () from /usr/lib64/qt4/libQtGui.so.4
#17 0x00007f499f71e343 in QGraphicsLinearLayout::setGeometry(QRectF const&) () from /usr/lib64/qt4/libQtGui.so.4
#18 0x00007f499f71c13a in QGraphicsLayout::widgetEvent(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#19 0x00007f499f75ab1a in QGraphicsWidget::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#20 0x00007f499f142b54 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#21 0x00007f499f1479d3 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#22 0x00007f49a0cde5dd in KApplication::notify (this=0xd62580, receiver=0x2584900, event=0x7fffcc63a750) at /var/tmp/portage/kde-base/kdelibs-4.8.90/work/kdelibs-4.8.90/kdeui/kernel/kapplication.cpp:311
#23 0x00007f499ffb291c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#24 0x00007f499f75c14a in QGraphicsWidget::setGeometry(QRectF const&) () from /usr/lib64/qt4/libQtGui.so.4
#25 0x00007f499f759db8 in QGraphicsWidget::resize(QSizeF const&) () from /usr/lib64/qt4/libQtGui.so.4
#26 0x00007f49a305e4a7 in Plasma::Dialog::resizeEvent (this=0x143da80, event=<optimized out>) at /var/tmp/portage/kde-base/kdelibs-4.8.90/work/kdelibs-4.8.90/plasma/dialog.cpp:568
#27 0x00007f499f19321a in QWidget::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#28 0x00007f499f142b54 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#29 0x00007f499f1479d3 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#30 0x00007f49a0cde5dd in KApplication::notify (this=0xd62580, receiver=0x143da80, event=0x7fffcc63b0f0) at /var/tmp/portage/kde-base/kdelibs-4.8.90/work/kdelibs-4.8.90/kdeui/kernel/kapplication.cpp:311
#31 0x00007f499ffb291c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#32 0x00007f499f18dcd5 in QWidgetPrivate::sendPendingMoveAndResizeEvents(bool, bool) () from /usr/lib64/qt4/libQtGui.so.4
#33 0x00007f499f1957d1 in QWidgetPrivate::show_helper() () from /usr/lib64/qt4/libQtGui.so.4
#34 0x00007f499f195bf2 in QWidget::setVisible(bool) () from /usr/lib64/qt4/libQtGui.so.4
#35 0x00007f49a307f3a6 in Plasma::PopupAppletPrivate::showDialog (this=0x14b1060) at /var/tmp/portage/kde-base/kdelibs-4.8.90/work/kdelibs-4.8.90/plasma/popupapplet.cpp:777
#36 0x00007f499ffcb599 in QObject::event(QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#37 0x00007f499f75ab5b in QGraphicsWidget::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#38 0x00007f499f142b54 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#39 0x00007f499f1479d3 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#40 0x00007f49a0cde5dd in KApplication::notify (this=0xd62580, receiver=0x1484400, event=0x7fffcc63b9c0) at /var/tmp/portage/kde-base/kdelibs-4.8.90/work/kdelibs-4.8.90/kdeui/kernel/kapplication.cpp:311
#41 0x00007f499ffb291c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#42 0x00007f499ffe35d2 in QTimerInfoList::activateTimers() () from /usr/lib64/qt4/libQtCore.so.4
#43 0x00007f499ffe100d in timerSourceDispatch(_GSource*, int (*)(void*), void*) () from /usr/lib64/qt4/libQtCore.so.4
#44 0x00007f4996d6e43a in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#45 0x00007f4996d6e800 in ?? () from /usr/lib64/libglib-2.0.so.0
#46 0x00007f4996d6e8c4 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#47 0x00007f499ffe17cf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#48 0x00007f499f1e571e in QGuiEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtGui.so.4
#49 0x00007f499ffb1702 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#50 0x00007f499ffb1957 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#51 0x00007f499ffb64b5 in QCoreApplication::exec() () from /usr/lib64/qt4/libQtCore.so.4
#52 0x00007f49a385c325 in kdemain (argc=1, argv=0x7fffcc63c038) at /var/tmp/portage/kde-base/plasma-workspace-4.8.90/work/plasma-workspace-4.8.90/plasma/desktop/shell/main.cpp:120
#53 0x00007f49a34b236d in __libc_start_main () from /lib64/libc.so.6
#54 0x00000000004007b1 in _start ()


(still some information missing, but a little for verbose than before).
Comment 4 Janek Bevendorff 2012-06-19 14:34:42 UTC
Additional info: Following exactly the reproduction steps I described above in the summary I was also able to reproduce the crash described in Bug 299237 and I also got another one:

Application: Plasma Desktop Shell (plasma-desktop), signal: Segmentation fault
[KCrash Handler]
#6  0x00000000009fac70 in ?? ()
#7  0x00007f15d52f0725 in ClockApplet::Private::addTzToTipText (this=<optimized out>, subText=..., data=..., prevDate=..., highlight=false) at /var/tmp/portage/kde-base/libplasmaclock-4.8.90/work/libplasmaclock-4.8.90/libs/plasmaclock/clockapplet.cpp:106
#8  0x00007f15d52ec83f in ClockApplet::updateTipContent (this=0xf7db20) at /var/tmp/portage/kde-base/libplasmaclock-4.8.90/work/libplasmaclock-4.8.90/libs/plasmaclock/clockapplet.cpp:297
#9  0x00007f15f3a093f1 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const () from /usr/lib64/qt4/libQtCore.so.4
#10 0x00007f15f3a0b6e0 in QMetaObject::invokeMethod(QObject*, char const*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) () from /usr/lib64/qt4/libQtCore.so.4
#11 0x00007f15f6a75dac in QMetaObject::invokeMethod (obj=0xf7db20, member=0x7f15f6c190d5 "toolTipAboutToShow", val0=..., val1=..., val2=..., val3=..., val4=..., val5=..., val6=..., val7=..., val8=..., val9=...) at /usr/include/qt4/QtCore/qobjectdefs.h:434
#12 0x00007f15f6b3796d in Plasma::ToolTipManagerPrivate::showToolTip (this=0xa7a730) at /var/tmp/portage/kde-base/kdelibs-4.8.90/work/kdelibs-4.8.90/plasma/tooltipmanager.cpp:387
#13 0x00007f15f6b37d49 in Plasma::ToolTipManager::qt_static_metacall (_o=0xa7a920, _c=<optimized out>, _id=2, _a=0x7fffedd016a0) at /var/tmp/portage/kde-base/kdelibs-4.8.90/work/kdelibs-4.8.90_build/plasma/tooltipmanager.moc:65
#14 0x00007f15f3a156a1 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/qt4/libQtCore.so.4
#15 0x00007f15f3a1a599 in QObject::event(QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#16 0x00007f15f2b91b54 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#17 0x00007f15f2b969d3 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#18 0x00007f15f472d5dd in KApplication::notify (this=0x87e5f0, receiver=0xa7a250, event=0x7fffedd01dd0) at /var/tmp/portage/kde-base/kdelibs-4.8.90/work/kdelibs-4.8.90/kdeui/kernel/kapplication.cpp:311
#19 0x00007f15f3a0191c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#20 0x00007f15f3a325d2 in QTimerInfoList::activateTimers() () from /usr/lib64/qt4/libQtCore.so.4
#21 0x00007f15f3a3000d in timerSourceDispatch(_GSource*, int (*)(void*), void*) () from /usr/lib64/qt4/libQtCore.so.4
#22 0x00007f15f3a30031 in idleTimerSourceDispatch(_GSource*, int (*)(void*), void*) () from /usr/lib64/qt4/libQtCore.so.4
#23 0x00007f15ea7bd43a in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#24 0x00007f15ea7bd800 in ?? () from /usr/lib64/libglib-2.0.so.0
#25 0x00007f15ea7bd8c4 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#26 0x00007f15f3a307cf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#27 0x00007f15f2c3471e in QGuiEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtGui.so.4
#28 0x00007f15f3a00702 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#29 0x00007f15f3a00957 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#30 0x00007f15f3a054b5 in QCoreApplication::exec() () from /usr/lib64/qt4/libQtCore.so.4
#31 0x00007f15f72ab325 in kdemain (argc=1, argv=0x7fffedd02458) at /var/tmp/portage/kde-base/plasma-workspace-4.8.90/work/plasma-workspace-4.8.90/plasma/desktop/shell/main.cpp:120
#32 0x00007f15f6f0136d in __libc_start_main () from /lib64/libc.so.6
#33 0x00000000004007b1 in _start ()


I have no idea what I did differently to invoke three different crashs (or at least three crashs with different back traces), therefore I just add this as an annotation to this bug instead of opening a new one.
Comment 5 Janek Bevendorff 2012-06-19 14:38:42 UTC
Even more info: I found out what I did differently: the crash described in the comment above happens when just hovering over with the mouse to invoke the tooltip of the clock widget instead of clicking it without bringing up the tooltip.
Comment 6 Myriam Schweingruber 2012-06-20 09:41:14 UTC
Thank you for the feedback.
Comment 7 Marco Martin 2012-06-22 18:24:21 UTC
Git commit 8821e4d3c0b7628f7633c53665e06f75db6f7a47 by Marco Martin.
Committed on 22/06/2012 at 14:28.
Pushed by mart into branch 'master'.

don't store a pointer to KGlobal::locale()->calendar()

it may be deleted at a locale chenge
still needs testing

M  +23   -13   libs/plasmaclock/calendartable.cpp

http://commits.kde.org/kde-workspace/8821e4d3c0b7628f7633c53665e06f75db6f7a47
Comment 8 Janek Bevendorff 2012-06-23 12:08:08 UTC
I can still reproduce this in Project Neon.
Comment 9 Janek Bevendorff 2012-06-24 16:01:03 UTC
I guess I was too impatient. Looks fixed in today's Neon build.