Bug 339970 - KWin crashed when new window was opened while window presentation was active
Summary: KWin crashed when new window was opened while window presentation was active
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: effects-window-management (show other bugs)
Version: 4.11.11
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: KWin default assignee
URL: https://git.reviewboard.kde.org/r/120...
Keywords:
: 354916 (view as bug list)
Depends on:
Blocks:
 
Reported: 2014-10-15 07:43 UTC by Lukáš Karas
Modified: 2016-10-29 15:11 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
KWin configuration (5.63 KB, text/plain)
2014-10-15 07:44 UTC, Lukáš Karas
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Lukáš Karas 2014-10-15 07:43:53 UTC
- What I was doing when the application crashed:
KWin crashed when new window was opened while window presentation was active. It was java/swing window, but this is probably irrelevant.

Reproducible: Couldn't Reproduce

Steps to Reproduce:
I wasn't able to reproduce this issue, even when try to use "extremely slow" animations.



-- Backtrace:
Application: KWin (kwin), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7ff1d2eff800 (LWP 5910))]

Thread 2 (Thread 0x7ff1a1c5e700 (LWP 5933)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007ff1d18d1ffb in ?? () from /usr/lib/x86_64-linux-gnu/libQtScript.so.4
#2  0x00007ff1d18d2039 in ?? () from /usr/lib/x86_64-linux-gnu/libQtScript.so.4
#3  0x00007ff1ca476182 in start_thread (arg=0x7ff1a1c5e700) at pthread_create.c:312
#4  0x00007ff1d26e2fbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 1 (Thread 0x7ff1d2eff800 (LWP 5910)):
[KCrash Handler]
#6  QObject::property (this=0x2baba30, name=name@entry=0x7ff1d21bf981 "geometry") at kernel/qobject.cpp:3744
#7  0x00007ff1d21ae832 in KWin::EffectWindow::geometry (this=this@entry=0x2baba40) at ../../../kwin/libkwineffects/kwineffects.cpp:690
#8  0x00007ff1b04d0a9f in KWin::PresentWindowsEffect::calculateWindowTransformationsNatural (this=this@entry=0x25bcb00, windowlist=..., screen=0, motionManager=...) at ../../../kwin/effects/presentwindows/presentwindows.cpp:1238
#9  0x00007ff1b04d3f8d in KWin::PresentWindowsEffect::calculateWindowTransformations (this=0x25bcb00, windowlist=..., screen=screen@entry=0, motionManager=..., external=external@entry=true) at ../../../kwin/effects/presentwindows/presentwindows.cpp:983
#10 0x00007ff1b04da725 in KWin::PresentWindowsEffectProxy::calculateWindowTransformations (this=0x25bcb10, windows=..., screen=screen@entry=0, manager=...) at ../../../kwin/effects/presentwindows/presentwindows_proxy.cpp:39
#11 0x00007ff1b04e8bf0 in KWin::DesktopGridEffect::slotWindowClosed (this=0x25c78a0, w=0x29fbaa0) at ../../../kwin/effects/desktopgrid/desktopgrid.cpp:414
#12 0x00007ff1ccab487a in QMetaObject::activate (sender=0x2596850, m=m@entry=0x7ff1d23c8a20 <KWin::EffectsHandler::staticMetaObject>, local_signal_index=local_signal_index@entry=5, argv=argv@entry=0x7fff72c4c8c0) at kernel/qobject.cpp:3539
#13 0x00007ff1d21b19b2 in KWin::EffectsHandler::windowClosed (this=<optimized out>, _t1=0x29fbaa0) at ./kwineffects.moc:493
#14 0x00007ff1d29fa48c in KWin::EffectsHandlerImpl::qt_static_metacall (_o=0x2baba30, _id=45791792, _a=0x7fff72c4ca30, _c=<optimized out>) at moc_effects.cpp:152
#15 0x00007ff1ccab487a in QMetaObject::activate (sender=sender@entry=0x2916230, m=m@entry=0x7ff1d2d45a20 <KWin::Toplevel::staticMetaObject>, local_signal_index=local_signal_index@entry=6, argv=argv@entry=0x7fff72c4ca30) at kernel/qobject.cpp:3539
#16 0x00007ff1d2a742ab in KWin::Toplevel::windowClosed (this=this@entry=0x2916230, _t1=_t1@entry=0x2916230, _t2=_t2@entry=0x2705ba0) at ./toplevel.moc:376
#17 0x00007ff1d2a754d5 in KWin::Unmanaged::release (this=this@entry=0x2916230, on_shutdown=on_shutdown@entry=false) at ../../kwin/unmanaged.cpp:97
#18 0x00007ff1d2a339f3 in unmapNotifyEvent (this=0x2916230) at ../../kwin/events.cpp:1522
#19 KWin::Unmanaged::windowEvent (this=0x2916230, e=e@entry=0x7fff72c4ce10) at ../../kwin/events.cpp:1490
#20 0x00007ff1d2a34c35 in KWin::Workspace::workspaceEvent (this=0x20da8b0, e=e@entry=0x7fff72c4ce10) at ../../kwin/events.cpp:167
#21 0x00007ff1d2a28af0 in KWin::Application::x11EventFilter (this=0x7fff72c4d200, e=0x7fff72c4ce10) at ../../kwin/main.cpp:422
#22 0x00007ff1cbea25dc in qt_x11EventFilter (ev=0x7fff72c4ce10) at kernel/qapplication_x11.cpp:442
#23 0x00007ff1cbeb2e40 in QApplication::x11ProcessEvent (this=0x7fff72c4d200, event=event@entry=0x7fff72c4ce10) at kernel/qapplication_x11.cpp:3461
#24 0x00007ff1cbedc470 in QEventDispatcherX11::processEvents (this=0x1e2eaf0, flags=...) at kernel/qeventdispatcher_x11.cpp:132
#25 0x00007ff1cca9f0af in QEventLoop::processEvents (this=this@entry=0x7fff72c4d070, flags=...) at kernel/qeventloop.cpp:149
#26 0x00007ff1cca9f3a5 in QEventLoop::exec (this=this@entry=0x7fff72c4d070, flags=...) at kernel/qeventloop.cpp:204
#27 0x00007ff1ccaa4b79 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1225
#28 0x00007ff1cbe3837c in QApplication::exec () at kernel/qapplication.cpp:3828
#29 0x00007ff1d2a299d6 in kdemain (argc=3, argv=0x7fff72c4d348) at ../../kwin/main.cpp:597
#30 0x00007ff1d2609ec5 in __libc_start_main (main=0x4006d0 <main(int, char**)>, argc=3, argv=0x7fff72c4d348, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff72c4d338) at libc-start.c:287
#31 0x00000000004006fe in _start ()
Comment 1 Lukáš Karas 2014-10-15 07:44:41 UTC
Created attachment 89135 [details]
KWin configuration
Comment 2 Martin Flöser 2014-10-15 07:53:10 UTC
The backtrace indicates you were using DesktopGrid Effect at the time the 
crash happened. Is that accurate?
Comment 3 Lukáš Karas 2014-10-15 08:29:38 UTC
(In reply to Martin Gräßlin from comment #2)
> The backtrace indicates you were using DesktopGrid Effect at the time the 
> crash happened. Is that accurate?

Yes, stacktrace looks like that. It probably was my confusion. Sorry. And it was caused by window (splash screen) close event probably (slotWindowClosed), not opening new window.
Comment 4 Martin Flöser 2014-10-15 08:51:12 UTC
> Yes, stacktrace looks like that. It probably was my confusion. Sorry. And it
> was caused by window (splash screen) close event probably
> (slotWindowClosed), not opening new window.

just to get it confirmed: the closing of a splash screen in Desktop Grid 
triggered the crash?

The splash screen of which application was that?
Comment 5 Lukáš Karas 2014-10-15 09:34:37 UTC
(In reply to Martin Gräßlin from comment #4)
> > Yes, stacktrace looks like that. It probably was my confusion. Sorry. And it
> > was caused by window (splash screen) close event probably
> > (slotWindowClosed), not opening new window.
> 
> just to get it confirmed: the closing of a splash screen in Desktop Grid 
> triggered the crash?

Yes - probably. Main window was opened after close splash screen immediately, so I can't say what action caused this crash. But in stack trace is method "slotWindowClosed"...

> 
> The splash screen of which application was that?

I was IntelliJ IDEA ( https://www.jetbrains.com/idea/ ), java/swing application. But I'm not able to reproduce this crash :-(
Comment 6 Martin Flöser 2014-10-15 09:39:14 UTC
not being able to reproduce makes it tricky ;-)

There are a few things which puzzle me in the stack trace. The window which got closed is an Unmanaged - normally a Splash screen shouldn't be unmanaged, but as it's Java it might be the case. But more interestingly it triggered a reordering of the grid which doesn't make sense for an Unmanaged as they shouldn't be added to the grid in the first place.
Comment 7 Thomas Lübking 2014-10-15 11:07:26 UTC
Looking at the desktopgrid code, ::slotWindowDeleted() should probably ensure to kick the deleted window from all managers.

Eg. if a window is closed while "timeline.currentValue() == 0", slotWindowClosed() will shortcut exit and not be removed from the managers, thus dangle around forever.

Maybe there're other ways for a window to be deleted w/o the closed slot being entered.
Comment 8 Thomas Lübking 2015-11-05 20:56:20 UTC
*** Bug 354916 has been marked as a duplicate of this bug. ***
Comment 9 Thomas Lübking 2015-11-17 20:52:37 UTC
Git commit 12b63e2aa7ed3ecc9a20b1724b2368e9a8ab3d65 by Thomas Lübking.
Committed on 17/11/2015 at 20:30.
Pushed by luebking into branch 'master'.

remove deleted windows from motionmanagers

Eg. if a window is closed while "timeline.currentValue() == 0",
slotWindowClosed() will shortcut exit and not be removed from the
managers, thus dangle around forever.

Maybe there're other ways for a window to be deleted w/o
the closed slot being entered.
REVIEW: 126034

M  +6    -0    effects/desktopgrid/desktopgrid.cpp

http://commits.kde.org/kwin/12b63e2aa7ed3ecc9a20b1724b2368e9a8ab3d65
Comment 10 Martin Flöser 2016-10-29 15:11:09 UTC
as we haven't seen any further comments since the last commit, I assume the crash got fixed by that. In case the crash still happens, please reopen.