Bug 281753

Summary: KWin crashes when trying to maximize window
Product: [Plasma] kwin Reporter: Wonko <wonko>
Component: generalAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED DUPLICATE    
Severity: crash    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Wonko 2011-09-10 14:45:58 UTC
Application: kwin (4.7.00 (4.7.0))
KDE Platform Version: 4.7.00 (4.7.0) (Compiled from sources)
Qt Version: 4.7.3
Operating System: Linux 2.6.38-pf8 x86_64
Distribution: "Gentoo Base System release 2.0.3"

-- Information about the crash:
I have a Konqueror window (showing two tabs with local directories) grouped to a Konsole window. Normally they are minimized to the size of the title bar, I don't know how that in called in English. They are in this state when I log into KDE, when my manually saved session is being restored.

When I click with the middle mouse button onto the maximize button, KWin crashes. Every time, but only once, after login. Um, I thought. Now I tried again, and KWin crashes again, multiple times, I was asked if I want to use Openbox instead. I said no, still KWin crashes all the time. The crash seems to be a little different, Drkonqi does not find any possible duplicates. I saved the report locally, and when Drkonqi ended, I was without any window manager. I was able to get to a shell, starting KWin gives these messages:

wonko@weird ~ $ kwin
Application::crashHandler() called with signal 11; recent crashes: 1
KCrash: Application 'kwin' crashing...
KCrash: Attempting to start /usr/lib64/kde4/libexec/drkonqi from kdeinit
sock_file=/home/wonko/.kde4/socket-weird/kdeinit4__0
Warning: connect() failed: : Verbindungsaufbau abgelehnt
KCrash: Attempting to start /usr/lib64/kde4/libexec/drkonqi directly
Application::crashHandler() called with signal 11; recent crashes: 2

[1]+  Angehalten              kwin
wonko@weird ~ $ KCrash: Application 'kwin' crashing...
KCrash: Attempting to start /usr/lib64/kde4/libexec/drkonqi from kdeinit
sock_file=/home/wonko/.kde4/socket-weird/kdeinit4__0
Warning: connect() failed: : Verbindungsaufbau abgelehnt
KCrash: Attempting to start /usr/lib64/kde4/libexec/drkonqi directly
Application::crashHandler() called with signal 11; recent crashes: 3
KCrash: Application 'kwin' crashing...
KCrash: Attempting to start /usr/lib64/kde4/libexec/drkonqi from kdeinit
sock_file=/home/wonko/.kde4/socket-weird/kdeinit4__0
Warning: connect() failed: : Verbindungsaufbau abgelehnt
KCrash: Attempting to start /usr/lib64/kde4/libexec/drkonqi directly
Application::crashHandler() called with signal 11; recent crashes: 4
KCrash: Application 'kwin' crashing...
KCrash: Attempting to start /usr/lib64/kde4/libexec/drkonqi from kdeinit
sock_file=/home/wonko/.kde4/socket-weird/kdeinit4__0
Warning: connect() failed: : Verbindungsaufbau abgelehnt
KCrash: Attempting to start /usr/lib64/kde4/libexec/drkonqi directly
Openbox-Warning: Openbox wurde für 4 Desktops konfiguriert, aber die aktuelle Sitzung hat 6. Überschreibe die Openbox-Konfiguration.

Running Openbox now. BTW, I don't really know why I keep pushing the middle mouse button onto the maximize button, as this should do nothing to a window minimized to title bar size. Instead, I should just double-click on the title bar in order to restore the normal size.

There are some more problems with those grouped window, not sure if related in any way. Sometimes pressing the middle mouse button on the maximize button not only maximizes vertically as expected, but also horizontally. Pressing the right mouse button instead does nothing.

I'll upgrade to 4.7.1 soon, I'll post again if the problem is gone then. Could take some days, though.

Not sure if this weird report is of any use at all, but KWin is so essential for normal use. If necessary, I could re-compile stuff with debug information.

The crash can be reproduced some of the time.

-- Backtrace:
Application: KWin (kwin), signal: Segmentation fault
[Current thread is 1 (Thread 0x7f9f49ac2780 (LWP 6693))]

Thread 2 (Thread 0x7f9f30b32700 (LWP 6705)):
#0  0x00007f9f452fd4ec in pthread_cond_wait () from /lib64/libpthread.so.0
#1  0x00007f9f48120d84 in QTWTF::TCMalloc_PageHeap::scavengerThread() () from /usr/lib64/qt4/libQtScript.so.4
#2  0x00007f9f48120db9 in QTWTF::TCMalloc_PageHeap::runScavengerThread(void*) () from /usr/lib64/qt4/libQtScript.so.4
#3  0x00007f9f452f8d1c in start_thread () from /lib64/libpthread.so.0
#4  0x00007f9f4932389d in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7f9f49ac2780 (LWP 6693)):
[KCrash Handler]
#6  0x0000000000000000 in ?? ()
#7  0x00007f9f49629ba2 in KWin::ClientGroup::remove(KWin::Client*, QRect const&, bool) () from /usr/lib64/libkdeinit4_kwin.so
#8  0x00007f9f49629ecb in KWin::ClientGroup::updateStates(KWin::Client*, KWin::Client*) () from /usr/lib64/libkdeinit4_kwin.so
#9  0x00007f9f4967c438 in KWin::Client::setGeometry(int, int, int, int, KWin::ForceGeometry_t, bool) () from /usr/lib64/libkdeinit4_kwin.so
#10 0x00007f9f4967dfd6 in KWin::Client::blockGeometryUpdates(bool) () from /usr/lib64/libkdeinit4_kwin.so
#11 0x00007f9f4967e247 in KWin::Client::changeMaximize(bool, bool, bool) () from /usr/lib64/libkdeinit4_kwin.so
#12 0x00007f9f4967eb25 in KWin::Client::setMaximize(bool, bool) () from /usr/lib64/libkdeinit4_kwin.so
#13 0x00007f9f49678859 in KWin::Workspace::performWindowOperation(KWin::Client*, KDecorationDefines::WindowOperation) () from /usr/lib64/libkdeinit4_kwin.so
#14 0x00007f9f47938627 in KDecoration::maximize(QFlags<Qt::MouseButton>) () from /usr/lib64/libkdecorations.so.4
#15 0x00007f9f4793e8a8 in KCommonDecoration::maximize(QFlags<Qt::MouseButton>) () from /usr/lib64/libkdecorations.so.4
#16 0x00007f9f4793e8cb in KCommonDecoration::slotMaximize() () from /usr/lib64/libkdecorations.so.4
#17 0x00007f9f4793eec0 in KCommonDecoration::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib64/libkdecorations.so.4
#18 0x00007f9f3228c105 in Oxygen::Client::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib64/kde4/kwin3_oxygen.so
#19 0x00007f9f45682897 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/qt4/libQtCore.so.4
#20 0x00007f9f44e8ce82 in QAbstractButton::clicked(bool) () from /usr/lib64/qt4/libQtGui.so.4
#21 0x00007f9f44bdb02b in QAbstractButtonPrivate::emitClicked() () from /usr/lib64/qt4/libQtGui.so.4
#22 0x00007f9f44bdc5cb in QAbstractButtonPrivate::click() () from /usr/lib64/qt4/libQtGui.so.4
#23 0x00007f9f44bdc82c in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#24 0x00007f9f4793c7ea in KCommonDecorationButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib64/libkdecorations.so.4
#25 0x00007f9f32282ada in Oxygen::Button::mouseReleaseEvent(QMouseEvent*) () from /usr/lib64/kde4/kwin3_oxygen.so
#26 0x00007f9f44898c63 in QWidget::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#27 0x00007f9f44848104 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#28 0x00007f9f4484d462 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#29 0x00007f9f48e1a046 in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5
#30 0x00007f9f4566e483 in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#31 0x00007f9f448490c6 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib64/qt4/libQtGui.so.4
#32 0x00007f9f448c660f in QETWidget::translateMouseEvent(_XEvent const*) () from /usr/lib64/qt4/libQtGui.so.4
#33 0x00007f9f448c4cd9 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#34 0x00007f9f448ed382 in QEventDispatcherX11::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtGui.so.4
#35 0x00007f9f4566d8a2 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#36 0x00007f9f4566dae4 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#37 0x00007f9f45671e63 in QCoreApplication::exec() () from /usr/lib64/qt4/libQtCore.so.4
#38 0x00007f9f4963517d in kdemain () from /usr/lib64/libkdeinit4_kwin.so
#39 0x00007f9f4926debd in __libc_start_main () from /lib64/libc.so.6
#40 0x0000000000400789 in _start ()

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

Possible duplicates by query: bug 265674.

Reported using DrKonqi
Comment 1 Thomas Lübking 2011-09-10 15:29:09 UTC
a) is a dupe of bug #265674
b) maximizing shaded windows is indeed broken. we need to define a sane strategy and implement it
c) window tabbbing is still... sigh

I could so far not reproduce this here, but it very much looks like an out of bound access in clientgroup.cpp:164 - since you volunteered for recompilation ;-)

try to inject a debug output and check/post the values ...

if (newVisible == c) {
   qDebug() << visible_ << clients_.size();
   newVisible = (visible_ != clients_.size() - 1) ? clients_[visible_ + 1] : clients_[visible_ - 1];
}

also i wonder why maximization should disrupt konqueror & konsole - do you have a max size rule for one of them? (or is it maybe not konsole but eg. gnome-terminal?)
Comment 2 Thomas Lübking 2011-09-10 15:41:19 UTC

*** This bug has been marked as a duplicate of bug 265674 ***
Comment 3 Wonko 2011-09-10 15:45:01 UTC
I thought maximizing shaded (ah, that's what it's called) windows worked fine. maybe before 4.7?

I'm also very happy with window tabbing, in general. This feature is just great. For example, I switched from KMail to Claws, so I grouped Claws to the Kontact window, and it fees pretty much the same. The grouped Konqueror/Konsole windows are for handling video clips and music files, and normally I only need either of them, not both at a time. So by grouping I save space.

No, there are no window rules for Konqueror and Konsole.

Okay, first comes the update to 4.7.1 now, which take a whileon this PC. If the problem still happens, I will try to get you the debug output.

Here's some more stuff I just was writing in parallel, but now I guess most is no news to you. Anyway, some more observations:

The grouped-window title bar is somewhat smaller than it was when I saved the session. Probably of the size that each of the grouped windows had.

Right-clicking on the maximize button maximizes horizontally, clicking again does nothing. Happens with those windows only - I have another Konsole grouped to a single Dolphin window, this works fine.

Hmm, middle-clicking on the maximize button now works as expected. Oh, and suddenly right-clicking also does, a 2nd click restores the original size. Maybe that's because I just tried with the other grouped window?

Minimizing _any_ window to title bar size and then right-clicking on the maximize button makes the title bar smaller, not maximized horizontally. And the window moves to the left screen edge. More clicks do not change the size, but move the window back. Similar things happen with middle clicks.
Comment 4 Thomas Lübking 2011-09-10 16:44:55 UTC
Maximizing: yes. (mostly) unmaximizing - rather not. The restorage geometry gets polluted.

The problem about tabbing is not the feature but the implementation. There were tons of unguarded pointer accesses. The developer showed up a gsoc, the then semi-maintainer somehow merged it in and for the first releases it did nothing but crash all the time. I've myself fixed at least half a dozen independent invalid pointer acceses (and at some point the dozen accesses in an entire file which randomly crashed one or another) - and i don#t really don't use tabbing.
Martin and other developers have probably fixed about the same amount. And evertytime we (ok: "I") think "that's been the last one" there another one to show up.
I've so far refused to support tabbing in the bespin decoration for only this reason and even if i get banned for this: the tabbing code is crap.

> Maybe that's because I just tried with the other grouped window?
Yes. For some reason the tabbing code believes to not be able to keep the maximized clients tabbed. That's why i've asked for the rule.

> Minimizing _any_ window to title bar size and then right-clicking
Yes, (partial) maximizing of shaded windows is broken. On my list - but not the very top....
Comment 5 Martin Flöser 2011-09-10 19:13:07 UTC
> I've so far refused to support tabbing in the bespin decoration for only
> this reason and even if i get banned for this: the tabbing code is crap.
I fully agree on that statement when remembering how I tried to implement it in Aurorae and how I tried (and failed) to extend it to show tooltips for inactive tabs.

The experience with tabbing is also one of the main reasons why I consider to drop the scripting code.