Bug 159458 - Plasma chrashes on exit (into the taskmanager)
Summary: Plasma chrashes on exit (into the taskmanager)
Status: RESOLVED WORKSFORME
Alias: None
Product: plasma4
Classification: Plasma
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-03-17 12:06 UTC by Vincenzo Di Massa
Modified: 2008-06-27 10:35 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vincenzo Di Massa 2008-03-17 12:06:47 UTC
Version:            (using Devel)
Installed from:    Compiled sources
OS:                Linux

To reproduce:
1) issue the command 
$ kquitapp plasma


What follows is the valgrind trace of the crash

==7891== Invalid read of size 4
==7891==    at 0x4F808F6: XFreePixmap (in /usr/lib/libX11.so.6.2.0)
==7891==    by 0xC2E770B: TaskManager::Task::~Task() (task.cpp:124)
==7891==    by 0xC2E83C7: KSharedPtr<TaskManager::Task>::~KSharedPtr() (ksharedptr.h:78)
==7891==    by 0xC2EF281: QMap<unsigned long, KSharedPtr<TaskManager::Task> >::freeData(QMapData*) (qmap.h:593)
==7891==    by 0xC2EF567: QMap<unsigned long, KSharedPtr<TaskManager::Task> >::~QMap() (qmap.h:153)
==7891==    by 0xC2EF5A9: TaskManager::TaskManager::Private::~Private() (taskmanager.cpp:51)
==7891==    by 0xC2EDF33: TaskManager::TaskManager::~TaskManager() (taskmanager.cpp:101)
==7891==    by 0xC2F02DC: TaskManager::TaskManagerSingleton::~TaskManagerSingleton() (taskmanager.cpp:38)
==7891==    by 0xC2EDFBE: TaskManager::._239::destroy() (taskmanager.cpp:43)
==7891==    by 0xC2EE70E: KCleanUpGlobalStatic::~KCleanUpGlobalStatic() (kglobal.h:65)
==7891==    by 0xC2EC19B: __tcf_0 (taskmanager.cpp:43)
==7891==    by 0x5AD4593: exit (in /lib/tls/i686/cmov/libc-2.6.1.so)

And this is the gdb backtrace:

#6  0xb6fc88f6 in XFreePixmap () from /usr/lib/libX11.so.6
#7  0xb28bb70c in ~Task (this=0x8328250)
    at /home/hawk/stanzino/kde/src/4/KDE/kdebase/workspace/libs/taskmanager/task.cpp:124
#8  0xb28bc3c8 in ~KSharedPtr (this=0x8389330)
    at /media/sdb6/kde4_install/kde4/include/ksharedptr.h:78
#9  0xb28c35b5 in ~Private (this=0x8389330)
    at /home/hawk/stanzino/kde/src/4/KDE/kdebase/workspace/libs/taskmanager/taskmanager.cpp:51
#10 0xb28c1f34 in ~TaskManager (this=0x8327d00)
    at /home/hawk/stanzino/kde/src/4/KDE/kdebase/workspace/libs/taskmanager/taskmanager.cpp:101
#11 0xb28c42dd in ~TaskManagerSingleton (this=0x8327d00)
    at /home/hawk/stanzino/kde/src/4/KDE/kdebase/workspace/libs/taskmanager/taskmanager.cpp:38
#12 0xb28c1fbf in destroy ()
    at /home/hawk/stanzino/kde/src/4/KDE/kdebase/workspace/libs/taskmanager/taskmanager.cpp:43
#13 0xb28c270f in ~KCleanUpGlobalStatic (this=0xb28c6a50)
    at /media/sdb6/kde4_install/kde4/include/KDE/../kglobal.h:65
#14 0xb28c019c in __tcf_0 ()
    at /home/hawk/stanzino/kde/src/4/KDE/kdebase/workspace/libs/taskmanager/taskmanager.cpp:43
#15 0xb6437594 in exit () from /lib/tls/i686/cmov/libc.so.6
#16 0xb6420058 in __libc_start_main () from /lib/tls/i686/cmov/libc.so.6
#17 0x08048751 in _start ()
#0  0xffffe410 in __kernel_vsyscall ()

Where does the windowPixmap in Task:Private becomes a not NULL invalid value?

Just above that error there are these other 2 (don't know if they are related or not to this bug):

plasma(7891) SystemTrayContainer::SystemTrayContainer: attempting to embed 62914583
plasma(7891) SystemTrayContainer::SystemTrayContainer: attempting to embed 67108875
==7891==
==7891== Syscall param write(buf) points to uninitialised byte(s)
==7891==    at 0x40007F2: (within /lib/ld-2.6.1.so)
==7891==    by 0x4FA767E: _X11TransWrite (in /usr/lib/libX11.so.6.2.0)
==7891==    by 0x4F9F4D6: (within /usr/lib/libX11.so.6.2.0)
==7891==    by 0x4F793BA: XCheckTypedWindowEvent (in /usr/lib/libX11.so.6.2.0)
==7891==    by 0x52FFDC1: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3350)
==7891==    by 0x532E0F4: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:148)
==7891==    by 0x5E1E11B: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.1400.1)
==7891==    by 0x5E2155E: (within /usr/lib/libglib-2.0.so.0.1400.1)
==7891==    by 0x5E21AC4: g_main_context_iteration (in /usr/lib/libglib-2.0.so.0.1400.1)
==7891==    by 0x4BF0E33: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (qeventdispatcher_glib.cpp:325)
==7891==    by 0x532D91F: QGuiEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (qguieventdispatcher_glib.cpp:204)
==7891==    by 0x4BBFA5D: QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (qeventloop.cpp:146)
==7891==  Address 0x69bb9f6 is 14 bytes inside a block of size 16,384 alloc'd
==7891==    at 0x4021BDE: calloc (vg_replace_malloc.c:397)
==7891==    by 0x4F8D326: XOpenDisplay (in /usr/lib/libX11.so.6.2.0)
==7891==    by 0x40319E5: checkComposite() (plasmaapp.cpp:72)
==7891==    by 0x4031D23: PlasmaApp::self() (plasmaapp.cpp:108)
==7891==    by 0x4030308: kdemain (main.cpp:51)
==7891==    by 0x80487D5: main (plasma-qgv_dummy.cpp:3)
plasma(7891) RssEngine::processRss: not all caches up to date, delaying update.
plasma(7891) RssEngine::processRss: not all caches up to date, delaying update.
plasma(7891) RssEngine::processRss: all caches up to date, updating...
plasma(7891) RssEngine::processRss: all caches up to date, updating...
==7891==
==7891== Syscall param write(buf) points to uninitialised byte(s)
==7891==    at 0x40007F2: (within /lib/ld-2.6.1.so)
==7891==    by 0x4FA767E: _X11TransWrite (in /usr/lib/libX11.so.6.2.0)
==7891==    by 0x4F9F4D6: (within /usr/lib/libX11.so.6.2.0)
==7891==    by 0x4F7E890: XFlush (in /usr/lib/libX11.so.6.2.0)
==7891==    by 0x531BCE5: QWidgetPrivate::hide_sys() (qwidget_x11.cpp:1973)
==7891==    by 0x52E2904: QWidgetPrivate::hide_helper() (qwidget.cpp:6163)
==7891==    by 0x52E9C75: QWidget::setVisible(bool) (qwidget.cpp:6325)
==7891==    by 0x52CBE67: QWidget::hide() (qwidget.h:474)
==7891==    by 0x52E09C9: QWidget::~QWidget() (qwidget.cpp:1292)
==7891==    by 0x4033528: RootWidget::~RootWidget() (rootwidget.cpp:102)
==7891==    by 0x4030D92: PlasmaApp::cleanup() (plasmaapp.cpp:227)
==7891==    by 0x4030E9A: PlasmaApp::qt_metacall(QMetaObject::Call, int, void**) (plasmaapp.moc:78)
==7891==  Address 0x69bb9fd is 21 bytes inside a block of size 16,384 alloc'd
==7891==    at 0x4021BDE: calloc (vg_replace_malloc.c:397)
==7891==    by 0x4F8D326: XOpenDisplay (in /usr/lib/libX11.so.6.2.0)
==7891==    by 0x40319E5: checkComposite() (plasmaapp.cpp:72)
==7891==    by 0x4031D23: PlasmaApp::self() (plasmaapp.cpp:108)
==7891==    by 0x4030308: kdemain (main.cpp:51)
==7891==    by 0x80487D5: main (plasma-qgv_dummy.cpp:3)

BTW: running plasma into vlagrind shows many problems (trash for example) some of which in Qt.
Are all of them false positive? 
(I know it is off topic here. Well... it has a high probability of being off-topic ;-) )
Comment 1 Chani 2008-03-22 23:41:49 UTC
this bug is slowly driving me insane.
a few weird things:
*if you remove the taskbar, then quit a minute later, the crash still happens on quit.
*if you don't have any taskbar at all, it still crashes sometimes. can't reproduce this... it crashed once with no backtrace (the debug output *said* it was crashing) and now it's behaving.
Comment 2 Markus Grob 2008-04-08 19:41:05 UTC
I have tried it too with KDE 4.0.3 with OpenSuse 10.3 and no error. Plasma is closed, while the app is still working. No traceback. Qt 4.3.4.
Comment 3 Francesco Cecconi 2008-04-20 12:35:19 UTC
Version:           Devel trunk 4.0.70 
Installed from:    Compiled sources
build:	           19/04/2008
OS:                Linux 
Distro:		   Debian
QT version:	   qt-copy 4.4.0 RC1
build:	           19/04/2008

Bug not reproducible
Comment 4 Francesco Cecconi 2008-06-18 16:25:32 UTC
Is this bug reproducible yet?
Comment 5 Vincenzo Di Massa 2008-06-27 10:35:17 UTC
Fixed.

All you KDE developers (expecially plasma ones (expecially Aaron)) really rock!