Bug 248817

Summary: kwin crashes when selecting a non-existing desktop in the desktop grid.
Product: [Plasma] kwin Reporter: Yohan Pereira <yohan.pereira>
Component: compositingAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: crash    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In: 4.5.2
Attachments: Screen shot when Desktop grid layout is set to Automatic
Screen shot when Desktop grid layout is set to pager

Description Yohan Pereira 2010-08-23 15:08:37 UTC
Application: kwin (4.5.00 (KDE 4.5.0))
KDE Platform Version: 4.5.00 (KDE 4.5.0) (Compiled from sources)
Qt Version: 4.6.3
Operating System: Linux 2.6.34-gentoo-r2 x86_64
Distribution (Platform): Gentoo Packages

-- Information about the crash:
- What I was doing when the application crashed:

When the layout mode of Desktop grid is set to Automatic and only one desktop is present, Activating the desktop grid does not zoom out of the current desktop but instead the present windows effect is activated.

However when the Layout mode is set to Pager, Activating the Desktop grid zooms out displaying the lone Desktop on top and  blank space below it. 
Clicking on this blank space causes kwin to zoom into it and then suddenly switch back to the actualy desktop and sometimes even causes kwin to crash.
This also happens when more than one desktop is present.

The crash can be reproduced some of the time.

-- Backtrace:
Application: KWin (kwin), signal: Segmentation fault
[KCrash Handler]
#6  0x00007f6bf261d0d4 in QHash<KWin::EffectWindow*, KWin::WindowMotionManager::WindowMotion>::findNode(KWin::EffectWindow* const&, unsigned int*) const () from /usr/lib/libkwineffects.so.1
#7  0x00007f6bf2617aee in KWin::WindowMotionManager::manage(KWin::EffectWindow*) () from /usr/lib/libkwineffects.so.1
#8  0x00007f6be9ecd1d9 in KWin::DesktopGridEffect::windowInputMouseEvent(unsigned long, QEvent*) () from /usr/lib64/kde4/kwin4_effect_builtins.so
#9  0x00007f6bf2e85235 in KWin::EffectsHandlerImpl::checkInputWindowEvent(_XEvent*) () from /usr/lib/libkdeinit4_kwin.so
#10 0x00007f6bf2e292f2 in KWin::Workspace::workspaceEvent(_XEvent*) () from /usr/lib/libkdeinit4_kwin.so
#11 0x00007f6bf2e059d8 in KWin::Application::x11EventFilter(_XEvent*) () from /usr/lib/libkdeinit4_kwin.so
#12 0x00000034b5833981 in qt_x11EventFilter(_XEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#13 0x00000034b5842a81 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#14 0x00000034b586dd11 in QEventDispatcherX11::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtGui.so.4
#15 0x00000034aaf66b12 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#16 0x00000034aaf66ee4 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#17 0x00000034aaf6bb5b in QCoreApplication::exec() () from /usr/lib64/qt4/libQtCore.so.4
#18 0x00007f6bf2e07524 in kdemain () from /usr/lib/libkdeinit4_kwin.so
#19 0x00007f6bf2a6bd2d in __libc_start_main () from /lib/libc.so.6
#20 0x0000000000400789 in _start ()

This bug may be a duplicate of or related to bug 220582.

Possible duplicates by query: bug 220582.

Reported using DrKonqi
Comment 1 Yohan Pereira 2010-08-23 15:19:58 UTC
Created attachment 50866 [details]
Screen shot when Desktop grid layout is set to Automatic
Comment 2 Yohan Pereira 2010-08-23 15:21:28 UTC
Created attachment 50867 [details]
Screen shot when Desktop grid layout is set to pager
Comment 3 Martin Flöser 2010-08-23 18:05:18 UTC
The backtrace is unfortunately rather useless as it's missing the debug information. As you are able to reproduce at will, please install/compile the debug packages and attach a proper backtrace.

Thanks
Comment 4 Yohan Pereira 2010-08-23 20:53:05 UTC
here it is .. i hope.
i had forgotten to compile qt-gui and qt-core with gddb last time.


Application: KWin (kwin), signal: Segmentation fault
[KCrash Handler]
#6  QHash<KWin::EffectWindow*, KWin::WindowMotionManager::WindowMotion>::begin 
(this=0x49) at /usr/include/qt4/QtCore/qhash.h:460
#7  QHash<KWin::EffectWindow*, KWin::WindowMotionManager::WindowMotion>::keys 
(this=0x49) at /usr/include/qt4/QtCore/qhash.h:646
#8  0x00007f76337a0717 in KWin::WindowMotionManager::managedWindows 
(this=0xba8530, e=<value optimized out>) at /var/tmp/portage/kde-
base/kwin-4.5.0/work/kwin-4.5.0/kwin/lib/kwineffects.h:1661
#9  KWin::DesktopGridEffect::windowInputMouseEvent (this=0xba8530, e=<value 
optimized out>) at /var/tmp/portage/kde-
base/kwin-4.5.0/work/kwin-4.5.0/kwin/effects/desktopgrid/desktopgrid.cpp:624
#10 0x00007f763dd2c757 in KWin::EffectsHandlerImpl::checkInputWindowEvent 
(this=<value optimized out>, e=<value optimized out>)
    at /var/tmp/portage/kde-
base/kwin-4.5.0/work/kwin-4.5.0/kwin/effects.cpp:897
#11 0x00007f763dcda46d in KWin::Workspace::workspaceEvent (this=0xadff00, 
e=0x7fff19860620) at /var/tmp/portage/kde-
base/kwin-4.5.0/work/kwin-4.5.0/kwin/events.cpp:260
#12 0x00007f763dcb92be in KWin::Application::x11EventFilter 
(this=0x7fff19860910, e=0x7fff19860620) at /var/tmp/portage/kde-
base/kwin-4.5.0/work/kwin-4.5.0/kwin/main.cpp:363
#13 0x00007f763c86bebb in qt_x11EventFilter (ev=0x7fff19860620) at 
kernel/qapplication_x11.cpp:409
#14 0x00007f763c878c0c in QApplication::x11ProcessEvent (this=<value optimized 
out>, event=0x7fff19860620) at kernel/qapplication_x11.cpp:3243
#15 0x00007f763c8a0b8c in QEventDispatcherX11::processEvents (this=<value 
optimized out>, flags=) at kernel/qeventdispatcher_x11.cpp:132
#16 0x00007f763c330a0d in QEventLoop::processEvents (this=<value optimized 
out>, flags=) at kernel/qeventloop.cpp:149
#17 0x00007f763c330dce in QEventLoop::exec (this=0x7fff19860870, flags=) at 
kernel/qeventloop.cpp:201
#18 0x00007f763c33539a in QCoreApplication::exec () at 
kernel/qcoreapplication.cpp:1003
#19 0x00007f763c7fea96 in QApplication::exec () at 
kernel/qapplication.cpp:3581
#20 0x00007f763dcbbb3e in kdemain (argc=<value optimized out>, argv=<value 
optimized out>) at /var/tmp/portage/kde-
base/kwin-4.5.0/work/kwin-4.5.0/kwin/main.cpp:531
#21 0x000000000040084d in main (argc=428211648, argv=0x49) at 
/var/tmp/portage/kde-
base/kwin-4.5.0/work/kwin-4.5.0_build/kwin/kwin_dummy.cpp:3
Comment 5 Martin Flöser 2010-08-23 21:01:31 UTC
thanks - that was fast (in most cases we do not hear anything from the users any more if debug symbols are missing).

The crash could be a duplicate of bug #233363, but it is difficult to say as desktopgrid seemed to have quite some code changes in 4.5 ;-)
Comment 6 Yohan Pereira 2010-08-23 21:05:44 UTC
--- thanks - that was fast (in most cases we do not hear anything
> from the users any more if debug symbols are missing).
> 
> The crash could be a duplicate of bug #233363, but it is difficult to say
> as desktopgrid seemed to have quite some code changes in 4.5 ;-)

no problem doing my bit to help :D 
also this is how i reproduce the bug

1)enable the desktop grid plugin and set the layout to pager.
2)Make sure you have only one virtual desktop
3) activate the desktop grid and click on the blank space below the virtual 
desktop (shown in the attached screen shot of the pager layout). kwin will now 
zoom into the black space and then immediatly switch back to the actualy 
desktop.
4) keep repeating step 3 till kwin crashes (arround 5-7 times is usually 
enough).
Comment 7 Martin Flöser 2010-08-26 19:26:24 UTC
*** Bug 249137 has been marked as a duplicate of this bug. ***
Comment 8 Martin Flöser 2010-08-28 09:42:29 UTC
there is a bug in the pager: it leaves number of rows at two if there is only one desktop. I will add a sanity check to desktop grid to prevent this crash.
Comment 9 Martin Flöser 2010-08-28 09:58:53 UTC
SVN commit 1169040 by graesslin:

Add sanity check to DesktopGrid in case of pager layout and only one desktop.

Pager reported two rows, which does not make sense and caused the grid to be in
an inconsistent state.
CCBUG: 248817



 M  +5 -0      desktopgrid.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1169040
Comment 10 Martin Flöser 2010-08-28 10:00:32 UTC
SVN commit 1169041 by graesslin:

Forward port rev 1169040: Add sanity check to DesktopGrid in case of pager layout and only one desktop.

Pager reported two rows, which does not make sense and caused the grid to be in
an inconsistent state.
CCBUG: 248817

 M  +5 -0      desktopgrid.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1169041
Comment 11 Martin Flöser 2010-08-28 10:07:45 UTC
SVN commit 1169042 by graesslin:

Do not drop desktop on non-existing desktops in the desktop grid.
BUG: 248817
FIXED-IN: 4.5.2



 M  +1 -1      desktopgrid.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1169042
Comment 12 Martin Flöser 2010-08-28 10:08:33 UTC
SVN commit 1169043 by graesslin:

Forward port rev 1169042: Do not drop desktop on non-existing desktops in the desktop grid.
CCBUG: 248817

 M  +1 -1      desktopgrid.cpp  


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