Bug 219468

Summary: Open Desktop applet crashes when I hit the login button and some investigations lead to the pending friendship request which somehow makes it crash.
Product: [Plasma] plasma4 Reporter: Anne-Marie Mahfouf <annma>
Component: widget-opendesktopAssignee: Sebastian Kügler <sebas>
Status: RESOLVED FIXED    
Severity: crash    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:

Description Anne-Marie Mahfouf 2009-12-20 21:14:47 UTC
Version:            (using Devel)
OS:                Linux
Installed from:    Compiled sources

The pending friendship request makes the login fails and the applet crash
Comment 1 Anne-Marie Mahfouf 2009-12-20 21:15:13 UTC
konsole output:

plasma-desktop(15797) FriendList::setOwnId: "" 
plasma-desktop(15797) FriendList::setProvider: provider "https://api.opendesktop.org/v1/"
plasma-desktop(15797) OcsEngine::sourceRequestEvent: Source request: "ReceivedInvitations" - arguments: QHash(("provider", "https://api.opendesktop.org/v1/"))                                                                              
plasma-desktop(15797) OcsEngine::sourceRequestEvent: Source request: "Messages" - arguments: QHash(("provider", "https://api.opendesktop.org/v1/")("folder", "0"))                                                                          
plasma-desktop(15797) OcsEngine::sourceRequestEvent: Source request: "Messages" - arguments: QHash(("status", "unread")("provider", "https://api.opendesktop.org/v1/")("folder", "0"))                                                      
plasma-desktop(15797) FriendList::setProvider: provider "https://api.opendesktop.org/v1/"                             
plasma-desktop(15797) FriendList::setOwnId: ""                                                                        
ProviderManager::authenticate  QUrl( "https://api.opendesktop.org/v1/" )                                              
plasma-desktop(15797) Attica::KdePlatformDependent::hasCredentials: Found credentials in KConfig                      
plasma-desktop(15797) Attica::KdePlatformDependent::loadCredentials: Successfully loaded credentials from kconfig     
ProviderManager::authenticate: loading authentication                                                                 
plasma-desktop(15797) OcsEngine::setPersonData: Setting person data "PersonSummary\provider:https://api.opendesktop.org/v1/\id:nightrose"                                                                                                   
Got a list of persons for "ReceivedInvitations\provider:https://api.opendesktop.org/v1/" : ("Person-nightrose")       
plasma-desktop(15797) OcsEngine::sourceRequestEvent: Source request: "Person" - arguments: QHash(("provider", "https://api.opendesktop.org/v1/")("id", "nightrose"))                                                                        
plasma-desktop(15797) OcsEngine::setPersonData: Setting person data "Person\provider:https://api.opendesktop.org/v1/\id:nightrose"                                                                                                          
plasma-desktop(15797) OcsEngine::sourceRequestEvent: Source request: "Person" - arguments: QHash(("provider", "https://api.opendesktop.org/v1/")("id", "west"))                                                                             
plasma-desktop(15797) OcsEngine::slotPersonResult: "Lydia"                                                            
plasma-desktop(15797) OcsEngine::setPersonData: Setting person data "PersonSummary\provider:https://api.opendesktop.org/v1/\id:nightrose"                                                                                                   
plasma-desktop(15797) OcsEngine::setPersonData: Setting person data "Person\provider:https://api.opendesktop.org/v1/\id:nightrose"                                                                                                          
KCrash: crashing... crashRecursionCounter = 2
Comment 2 Anne-Marie Mahfouf 2009-12-20 21:15:34 UTC
The crash can be reproduced everytime.

 -- Backtrace:
Application: Plasma Workspace (plasma-desktop), signal: Segmentation fault
[Current thread is 1 (Thread 0xb3b306d0 (LWP 15797))]

Thread 3 (Thread 0xa835eb90 (LWP 15798)):
#0  0xffffe424 in __kernel_vsyscall ()
#1  0xb5c9ec45 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/i686/libpthread.so.0
#2  0xb5d24bf8 in QWaitConditionPrivate::wait (this=0x99a39d8, time=4294967295) at thread/qwaitcondition_unix.cpp:87
#3  0xb5d246f7 in QWaitCondition::wait (this=0x99a3710, mutex=0x99a370c, time=4294967295) at thread/qwaitcondition_unix.cpp:159
#4  0xb759bf31 in QHostInfoAgent::run (this=0x99a3700) at kernel/qhostinfo.cpp:252
#5  0xb5d24156 in QThreadPrivate::start (arg=0x99a3700) at thread/qthread_unix.cpp:244
#6  0xb5c9b315 in start_thread () from /lib/i686/libpthread.so.0
#7  0xb5af925e in clone () from /lib/i686/libc.so.6

Thread 2 (Thread 0xa7301b90 (LWP 15805)):
#0  0xffffe424 in __kernel_vsyscall ()
#1  0xb5c9ec45 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/i686/libpthread.so.0
#2  0xb4ab77a1 in WTF::TCMalloc_PageHeap::scavengerThread () from /usr/local/trunk-src/kde-qt/lib/libQtWebKit.so.4
#3  0xb4ab782d in WTF::TCMalloc_PageHeap::runScavengerThread () from /usr/local/trunk-src/kde-qt/lib/libQtWebKit.so.4
#4  0xb5c9b315 in start_thread () from /lib/i686/libpthread.so.0
#5  0xb5af925e in clone () from /lib/i686/libc.so.6

Thread 1 (Thread 0xb3b306d0 (LWP 15797)):
[KCrash Handler]
#6  0xb7ac73f3 in Plasma::DataEngine::connectSource (this=0x0, source=@0x9e42260, visualization=0x9e42208, pollingInterval=0, intervalAlignment=Plasma::NoAlignment)
    at /usr/local/trunk-src/kdelibs/plasma/dataengine.cpp:89
#7  0xa8705753 in ContactImage::setUrl (this=0x9e42208, url=@0xbfaa083c) at /usr/local/trunk-src/kdeplasma-addons/applets/opendesktop/contactimage.cpp:55
#8  0xa86ecf63 in FriendManagementWidget::updated (this=0x9e3b0d8) at /usr/local/trunk-src/kdeplasma-addons/applets/opendesktop/friendmanagementwidget.cpp:171
#9  0xa86ed335 in FriendManagementWidget::qt_metacall (this=0x9e3b0d8, _c=QMetaObject::InvokeMetaMethod, _id=5, _a=0xbfaa0924)
    at /home/annma/build/kdeplasma-addons/applets/opendesktop/friendmanagementwidget.moc:93
#10 0xb5e541f5 in QMetaObject::metacall (object=0x9e3b0d8, cl=QMetaObject::InvokeMetaMethod, idx=20, argv=0xbfaa0924) at kernel/qmetaobject.cpp:237
#11 0xb5e68b57 in QMetaObject::activate (sender=0x9e3b11c, m=0xa8713a3c, local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3294
#12 0xa86f3edb in PersonWatch::updated (this=0x9e3b11c) at /home/annma/build/kdeplasma-addons/applets/opendesktop/personwatch.moc:93
#13 0xa86f4083 in PersonWatch::dataUpdated (this=0x9e3b11c, source=@0xbfaa0b48, data=@0x9d573d8) at /usr/local/trunk-src/kdeplasma-addons/applets/opendesktop/personwatch.cpp:50
#14 0xa86f42e8 in PersonWatch::qt_metacall (this=0x9e3b11c, _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0xbfaa0b08) at /home/annma/build/kdeplasma-addons/applets/opendesktop/personwatch.moc:82
#15 0xb5e541f5 in QMetaObject::metacall (object=0x9e3b11c, cl=QMetaObject::InvokeMetaMethod, idx=7, argv=0xbfaa0b08) at kernel/qmetaobject.cpp:237
#16 0xb5e68b57 in QMetaObject::activate (sender=0x9d402e0, m=0xb7c99fa4, local_signal_index=0, argv=0xbfaa0b08) at kernel/qobject.cpp:3294
#17 0xb7ac2d05 in Plasma::DataContainer::dataUpdated (this=0x9d402e0, _t1=@0xbfaa0b48, _t2=@0x9d573d8) at /home/annma/build/kdelibs/plasma/datacontainer.moc:101
#18 0xb7ac2fe7 in Plasma::DataContainer::checkForUpdate (this=0x9d402e0) at /usr/local/trunk-src/kdelibs/plasma/datacontainer.cpp:167
#19 0xb7ac6da7 in Plasma::DataEngine::timerEvent (this=0x9abec88, event=0xbfaa119c) at /usr/local/trunk-src/kdelibs/plasma/dataengine.cpp:389
#20 0xb5e636f6 in QObject::event (this=0x9abec88, e=0xbfaa119c) at kernel/qobject.cpp:1224
#21 0xb6193f74 in QApplicationPrivate::notify_helper (this=0x95dab20, receiver=0x9abec88, e=0xbfaa119c) at kernel/qapplication.cpp:4242
#22 0xb61943c3 in QApplication::notify (this=0x95d0788, receiver=0x9abec88, e=0xbfaa119c) at kernel/qapplication.cpp:3661
#23 0xb72be7bf in KApplication::notify (this=0x95d0788, receiver=0x9abec88, event=0xbfaa119c) at /usr/local/trunk-src/kdelibs/kdeui/kernel/kapplication.cpp:302
#24 0xb5e4c910 in QCoreApplication::notifyInternal (this=0x95d0788, receiver=0x9abec88, event=0xbfaa119c) at kernel/qcoreapplication.cpp:704
#25 0xb618fd05 in QCoreApplication::sendEvent (receiver=0x9abec88, event=0xbfaa119c) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#26 0xb5e8a7d6 in QTimerInfoList::activateTimers (this=0x95dd70c) at kernel/qeventdispatcher_unix.cpp:603
#27 0xb5e88016 in timerSourceDispatch (source=0x95dd6d8) at kernel/qeventdispatcher_glib.cpp:184
#28 0xb5e8804b in idleTimerSourceDispatch (source=0x95dd748) at kernel/qeventdispatcher_glib.cpp:231
#29 0xb42497ca in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#30 0xb424cee8 in ?? () from /usr/lib/libglib-2.0.so.0
#31 0xb424d0a8 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#32 0xb5e86eea in QEventDispatcherGlib::processEvents (this=0x95da740, flags={i = -1079372936}) at kernel/qeventdispatcher_glib.cpp:407
#33 0xb6284792 in QGuiEventDispatcherGlib::processEvents (this=0x95da740, flags={i = -1079372888}) at kernel/qguieventdispatcher_glib.cpp:202
#34 0xb5e48cb6 in QEventLoop::processEvents (this=0xbfaa1448, flags={i = -1079372812}) at kernel/qeventloop.cpp:149
#35 0xb5e48f28 in QEventLoop::exec (this=0xbfaa1448, flags={i = -1079372720}) at kernel/qeventloop.cpp:201
#36 0xb5e4d265 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:981
#37 0xb6196d56 in QApplication::exec () at kernel/qapplication.cpp:3570
#38 0xb804ef15 in kdemain (argc=1, argv=0xbfaa1614) at /usr/local/trunk-src/kdebase/workspace/plasma/desktop/shell/main.cpp:112
#39 0x08048746 in main (argc=164949800, argv=0xc4) at /home/annma/build/kdebase/workspace/plasma/desktop/shell/plasma-desktop_dummy.cpp:3
Comment 3 Frederik Gladhorn 2009-12-22 19:27:06 UTC
SVN commit 1065206 by gladhorn:

connect to the engine after creating the widgets
otherwise if we get data updated too soon, it may crash because of accessing widgets that haven't been created...
BUG: 219468


 M  +4 -3      opendesktop.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1065206
Comment 4 Anne-Marie Mahfouf 2009-12-23 14:59:54 UTC
It's not fixed and I get the same crash with the same backtrace.
Comment 5 Frederik Gladhorn 2010-01-18 13:32:02 UTC
SVN commit 1076586 by gladhorn:

backport r1076582
don't crash when no engine is set yet
(happens when loading and there is an outstanding friendship request)
BUG: 219468


 M  +3 -0      contactimage.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1076586