Bug 193042

Summary: Plasma-desktor crashes in manualSortingRequest
Product: [Unmaintained] plasma4 Reporter: Michael Jansen <kde>
Component: generalAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED FIXED    
Severity: crash CC: alex.merry, dev, fgunni, hammett, info, matt, moabi2000, notmart, rizzitello
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Michael Jansen 2009-05-17 20:56:31 UTC
Version:            (using Devel)
Compiler:          gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux) 
OS:                Linux
Installed from:    Compiled sources

I get this crash fairly often. I can't put my hand on what triggers it but i assume a starting application and switch virtual desktops could have something to do with it.

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

Thread 2 (Thread 0x7fa1965ad950 (LWP 18797)):
#0  0x00007fa1b0c57d59 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007fa1b0ec8e29 in QWaitCondition::wait (this=0xb4df80, mutex=0xb4df78, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  0x00007fa1b464479c in QHostInfoAgent::run (this=0xb4df60) at kernel/qhostinfo.cpp:260
#3  0x00007fa1b0ec7e75 in QThreadPrivate::start (arg=0xb4df60) at thread/qthread_unix.cpp:188
#4  0x00007fa1b0c54070 in start_thread () from /lib64/libpthread.so.0
#5  0x00007fa1b024d10d in clone () from /lib64/libc.so.6
#6  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7fa1b5c84790 (LWP 18294)):
[KCrash Handler]
#5  TaskManager::GroupManager::manualSortingRequest (this=0x200000000004d, taskItem=0xd7c2e0, newIndex=0) at /home/mjansen/kde4svn/src/kdebase-workspace/libs/taskmanager/groupmanager.cpp:345
#6  0x00007fa197f3963b in TaskManager::AbstractGroupingStrategy::closeGroup (this=0xdff820, group=0xe9f390)
    at /home/mjansen/kde4svn/src/kdebase-workspace/libs/taskmanager/abstractgroupingstrategy.cpp:140
#7  0x00007fa197f427f4 in TaskManager::ProgramGroupingStrategy::checkGroup (this=0xdff820) at /home/mjansen/kde4svn/src/kdebase-workspace/libs/taskmanager/strategies/programgroupingstrategy.cpp:196
#8  0x00007fa197f430f6 in TaskManager::ProgramGroupingStrategy::qt_metacall (this=0xdff820, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=<value optimized out>)
    at /home/mjansen/kde4svn/bld/kdebase-workspace/libs/taskmanager/programgroupingstrategy.moc:68
#9  0x00007fa1b0fc7282 in QMetaObject::activate (sender=0xe9f390, from_signal_index=<value optimized out>, to_signal_index=22, argv=0x1) at kernel/qobject.cpp:3120
#10 0x00007fa197f526b2 in TaskManager::TaskGroup::itemRemoved (this=0x200000000004d, _t1=0xd80c20) at /home/mjansen/kde4svn/bld/kdebase-workspace/libs/taskmanager/taskgroup.moc:143
#11 0x00007fa197f53d12 in TaskManager::TaskGroup::remove (this=0xe9f390, item=0xd80c20) at /home/mjansen/kde4svn/src/kdebase-workspace/libs/taskmanager/taskgroup.cpp:174
#12 0x00007fa197f3c469 in TaskManager::GroupManagerPrivate::removeTask (this=0xbddf90, task=<value optimized out>) at /home/mjansen/kde4svn/src/kdebase-workspace/libs/taskmanager/groupmanager.cpp:296
#13 0x00007fa197f3d81d in TaskManager::GroupManager::qt_metacall (this=0xacb060, _c=<value optimized out>, _id=<value optimized out>, _a=0x7fffbddc4400)
    at /home/mjansen/kde4svn/bld/kdebase-workspace/libs/taskmanager/groupmanager.moc:103
#14 0x00007fa1b0fc7282 in QMetaObject::activate (sender=0xa67c20, from_signal_index=<value optimized out>, to_signal_index=5, argv=0x1) at kernel/qobject.cpp:3120
#15 0x00007fa197f55be5 in TaskManager::TaskManager::taskRemoved (this=0x200000000004d, _t1=<value optimized out>) at /home/mjansen/kde4svn/bld/kdebase-workspace/libs/taskmanager/taskmanager.moc:159
#16 0x00007fa197f568bf in TaskManager::TaskManager::windowRemoved (this=0xa67c20, w=58720339) at /home/mjansen/kde4svn/src/kdebase-workspace/libs/taskmanager/taskmanager.cpp:265
#17 0x00007fa197f5708f in TaskManager::TaskManager::qt_metacall (this=0xa67c20, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fffbddc4610)
    at /home/mjansen/kde4svn/bld/kdebase-workspace/libs/taskmanager/taskmanager.moc:108
#18 0x00007fa1b0fc7282 in QMetaObject::activate (sender=0x81b720, from_signal_index=<value optimized out>, to_signal_index=6, argv=0x1) at kernel/qobject.cpp:3120
#19 0x00007fa1b4064fc2 in KWindowSystem::windowRemoved (this=0x200000000004d, _t1=58720339) at /home/mjansen/kde4svn/bld/kdelibs/kdeui/kwindowsystem.moc:127
#20 0x00007fa1b4067532 in KWindowSystemPrivate::removeClient (this=0x8450b0, w=58720339) at /home/mjansen/kde4svn/src/kdelibs/kdeui/windowmanagement/kwindowsystem_x11.cpp:249
#21 0x00007fa1b4073739 in NETRootInfo::update (this=0x8450d8, dirty_props=<value optimized out>) at /home/mjansen/kde4svn/src/kdelibs/kdeui/windowmanagement/netwm.cpp:2130
#22 0x00007fa1b4074a78 in NETRootInfo::event (this=0x8450d8, event=<value optimized out>, properties=0x7fffbddc4910, properties_size=5)
    at /home/mjansen/kde4svn/src/kdelibs/kdeui/windowmanagement/netwm.cpp:2053
#23 0x00007fa1b4067615 in KWindowSystemPrivate::x11Event (this=0x8450b0, ev=0x7fffbddc6380) at /home/mjansen/kde4svn/src/kdelibs/kdeui/windowmanagement/kwindowsystem_x11.cpp:136
#24 0x00007fa1b3f5d962 in KApplication::x11EventFilter (this=<value optimized out>, _event=0x7fffbddc6380) at /home/mjansen/kde4svn/src/kdelibs/kdeui/kernel/kapplication.cpp:985
#25 0x00007fa1b596c7eb in PlasmaApp::x11EventFilter (this=0x623580, event=0x7fffbddc6380) at /home/mjansen/kde4svn/src/kdebase-workspace/plasma/shells/desktop/plasmaapp.cpp:438
#26 0x00007fa1b1711ddf in qt_x11EventFilter (ev=0x7fffbddc6380) at kernel/qapplication_x11.cpp:375
#27 0x00007fa1b17250ae in QApplication::x11ProcessEvent (this=0x623580, event=0x7fffbddc6380) at kernel/qapplication_x11.cpp:3277
#28 0x00007fa1b174d554 in x11EventSourceDispatch (s=0x638bc0, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#29 0x00007fa1acb220fb in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#30 0x00007fa1acb258cd in ?? () from /usr/lib64/libglib-2.0.so.0
#31 0x00007fa1acb25a8b in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#32 0x00007fa1b0fdaeff in QEventDispatcherGlib::processEvents (this=0x60b080, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:327
#33 0x00007fa1b174ccdf in QGuiEventDispatcherGlib::processEvents (this=0x200000000004d, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:202
#34 0x00007fa1b0fb0042 in QEventLoop::processEvents (this=<value optimized out>, flags={i = -1109629328}) at kernel/qeventloop.cpp:149
#35 0x00007fa1b0fb0414 in QEventLoop::exec (this=0x7fffbddc66b0, flags={i = -1109629248}) at kernel/qeventloop.cpp:201
#36 0x00007fa1b0fb2704 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888
#37 0x00007fa1b5958fdb in kdemain (argc=1, argv=0x7fffbddc69c8) at /home/mjansen/kde4svn/src/kdebase-workspace/plasma/shells/desktop/main.cpp:50
#38 0x00007fa1b0198586 in __libc_start_main () from /lib64/libc.so.6
#39 0x0000000000400859 in _start () at ../sysdeps/x86_64/elf/start.S:113
Comment 1 Marco Martin 2009-05-17 21:42:49 UTC
closely related to bug 192651
Comment 2 Aaron J. Seigo 2009-05-18 14:01:34 UTC
*** Bug 192651 has been marked as a duplicate of this bug. ***
Comment 3 Dario Andres 2009-06-01 18:27:09 UTC
*** Bug 194890 has been marked as a duplicate of this bug. ***
Comment 4 Alex Merry 2009-06-07 12:37:23 UTC
I had an almost identical backtrace when I closed a window (I send an email, which meant that one of my two grouped KMail windows closed, destroying the group).  However, mine appeared to crash at the call to TaskManager::GroupManager::manualSortingRequest, rather than inside that method.  So the top of my backtrace looked like:

Thread 1 (Thread 0x7ff8ebc74760 (LWP 6682)):
[KCrash Handler]
#5  0x00007ff8ceac8fa2 in TaskManager::AbstractGroupingStrategy::closeGroup (this=0x1353330, group=0xf37680)
    at /home/kde-devel/src/KDE/kdebase/workspace/libs/taskmanager/abstractgroupingstrategy.cpp:140
#6  0x00007ff8cead5eb6 in TaskManager::ProgramGroupingStrategy::checkGroup (this=0x1353330) at /home/kde-devel/src/KDE/kdebase/workspace/libs/taskmanager/strategies/programgroupingstrategy.cpp:193
#7  0x00007ff8cead5f8c in TaskManager::ProgramGroupingStrategy::qt_metacall (this=0x1353330, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7ffff3cabd80)
    at /home/kde-devel/build/KDE/kdebase/workspace/libs/taskmanager/programgroupingstrategy.moc:68


Giving that my taskbar is set to group by program name rather than manually, manualSortingRequest shouldn't really be doing anything anyway.  The most likely cause I can think of is that the copy of groupManager pointed to from AbstractGroupingStrategy's d-pointer has been deleted.  Could this happen?
Comment 5 Marco Martin 2009-06-12 20:03:55 UTC
*** Bug 196209 has been marked as a duplicate of this bug. ***
Comment 6 Marco Martin 2009-06-13 15:52:29 UTC
*** Bug 196341 has been marked as a duplicate of this bug. ***
Comment 7 Christophe Marin 2009-06-15 11:32:50 UTC
*** Bug 196587 has been marked as a duplicate of this bug. ***
Comment 8 Marco Martin 2009-06-15 22:11:48 UTC
*** Bug 196664 has been marked as a duplicate of this bug. ***
Comment 9 Marco Martin 2009-06-16 15:12:30 UTC
*** Bug 196698 has been marked as a duplicate of this bug. ***
Comment 10 Jonathan Thomas 2009-06-18 23:24:19 UTC
*** Bug 197080 has been marked as a duplicate of this bug. ***
Comment 11 Jonathan Thomas 2009-06-19 00:22:51 UTC
*** Bug 197084 has been marked as a duplicate of this bug. ***
Comment 12 Jonathan Thomas 2009-06-21 18:56:39 UTC
*** Bug 197403 has been marked as a duplicate of this bug. ***
Comment 13 Aaron J. Seigo 2009-06-21 20:10:58 UTC
SVN commit 984926 by aseigo:

the task item pointer held on to during menus can be deleted on us, so use a QPointer; fixes some of the backtraces in the following reports:
CCBUGS:193042,188378


 M  +7 -1      programgroupingstrategy.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=984926
Comment 14 Aaron J. Seigo 2009-06-21 21:04:41 UTC
SVN commit 984938 by aseigo:

don't delete the grouping strategy immediatley when changing it. this is due to the following possible chain of events:

* window comes or goes
* the grouping strategy is asked to update the groups based on this event, and tells the group manager about a change in events
* the group manager notifies the outside world about it
* the tasks widget's size changes becuase of this and that affects the optimal number of entries to show, which it relays to the group manager
* the group manager realizes it now has enough room for all the tasks, and switches the grouping strategy ... BY DELETING THE GROUPING STRATEGY!
* execution then eventually returns to wherever we were at step 2 ... BOOM (with all sorts of oddness in the backtraces :)

this also explains why it was intermitent (change of grouping collection which caused a size change in the tasks widget which altered the optimal number of buttons) and only for some people ("only group when full" and with a variable size tasks widget, e.g. on an expanding panel)

this is a pretty big set of changes, and i've gone over them carefully and tested them as thoroughly as i can, but additional feedback from people using SVN would be great as this is a big set of changes this close to release

CCMAIL:plasma-devel@kde.org
BUGS:193042,188378


 M  +37 -11    abstractgroupingstrategy.cpp  
 M  +7 -0      abstractgroupingstrategy.h  
 M  +23 -20    groupmanager.cpp  
 M  +6 -4      strategies/kustodiangroupingstrategy.cpp  
 M  +40 -31    strategies/manualgroupingstrategy.cpp  
 M  +14 -9     strategies/programgroupingstrategy.cpp  


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