Bug 346854

Summary: ~PresentWindowsEffect hits assert in Scene::windowDeleted because the CloseWindowView is not in m_windows
Product: [Plasma] kwin Reporter: federico.schaerer
Component: effects-variousAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: crash Keywords: drkonqi
Priority: NOR    
Version: 5.2.2   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description federico.schaerer 2015-04-28 16:59:57 UTC
Application: kwin_x11 (5.2.2)
 (Compiled from sources)
Qt Version: 5.4.1
Operating System: Linux 3.19.0-15-generic x86_64
Distribution: Ubuntu 15.04

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

-- Backtrace:
Application: KWin (kwin_x11), signal: Aborted
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f551c81d800 (LWP 1522))]

Thread 4 (Thread 0x7f54fea40700 (LWP 1543)):
#0  0x00007f551c2ea743 in select () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007f551ab34101 in qt_safe_select (nfds=16, fdread=fdread@entry=0x7f54f4000a78, fdwrite=fdwrite@entry=0x7f54f4000d08, fdexcept=fdexcept@entry=0x7f54f4000f98, orig_timeout=orig_timeout@entry=0x0) at kernel/qcore_unix.cpp:75
#2  0x00007f551ab35cd2 in select (timeout=0x0, exceptfds=0x7f54f4000f98, writefds=0x7f54f4000d08, readfds=0x7f54f4000a78, nfds=<optimized out>, this=0x7f54f40008c0) at kernel/qeventdispatcher_unix.cpp:320
#3  QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x7f54f40008e0, flags=..., flags@entry=..., timeout=timeout@entry=0x0) at kernel/qeventdispatcher_unix.cpp:196
#4  0x00007f551ab36275 in QEventDispatcherUNIX::processEvents (this=0x7f54f40008c0, flags=...) at kernel/qeventdispatcher_unix.cpp:607
#5  0x00007f551aadd3e2 in QEventLoop::exec (this=this@entry=0x7f54fea3fda0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#6  0x00007f551a89cb44 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:503
#7  0x00007f551474ff65 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Qml.so.5
#8  0x00007f551a8a1b0e in QThreadPrivate::start (arg=0xd8d1f0) at thread/qthread_unix.cpp:337
#9  0x00007f551391c6aa in start_thread (arg=0x7f54fea40700) at pthread_create.c:333
#10 0x00007f551c2f3eed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 3 (Thread 0x7f54ee8f9700 (LWP 1548)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f55196a6644 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Script.so.5
#2  0x00007f55196a6689 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Script.so.5
#3  0x00007f551391c6aa in start_thread (arg=0x7f54ee8f9700) at pthread_create.c:333
#4  0x00007f551c2f3eed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 2 (Thread 0x7f5504853700 (LWP 1868)):
#0  0x00007f551c2ea743 in select () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007f551ab34101 in qt_safe_select (nfds=12, fdread=fdread@entry=0x7f54f8019b68, fdwrite=fdwrite@entry=0x7f54f8019df8, fdexcept=fdexcept@entry=0x7f54f801a088, orig_timeout=orig_timeout@entry=0x0) at kernel/qcore_unix.cpp:75
#2  0x00007f551ab35cd2 in select (timeout=0x0, exceptfds=0x7f54f801a088, writefds=0x7f54f8019df8, readfds=0x7f54f8019b68, nfds=<optimized out>, this=0x7f54f80008c0) at kernel/qeventdispatcher_unix.cpp:320
#3  QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x7f54f80199d0, flags=..., flags@entry=..., timeout=timeout@entry=0x0) at kernel/qeventdispatcher_unix.cpp:196
#4  0x00007f551ab36275 in QEventDispatcherUNIX::processEvents (this=0x7f54f80008c0, flags=...) at kernel/qeventdispatcher_unix.cpp:607
#5  0x00007f551aadd3e2 in QEventLoop::exec (this=this@entry=0x7f5504852da0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#6  0x00007f551a89cb44 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:503
#7  0x00007f551474ff65 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Qml.so.5
#8  0x00007f551a8a1b0e in QThreadPrivate::start (arg=0x1c49b40) at thread/qthread_unix.cpp:337
#9  0x00007f551391c6aa in start_thread (arg=0x7f5504853700) at pthread_create.c:333
#10 0x00007f551c2f3eed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7f551c81d800 (LWP 1522)):
[KCrash Handler]
#6  0x00007f551c222267 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55
#7  0x00007f551c223eca in __GI_abort () at abort.c:89
#8  0x00007f551c21b03d in __assert_fail_base (fmt=0x7f54fea561ae "%s%s%s:%u: %s%sLa declaraci\303\263n `%s' no se cumple.\n%n", assertion=assertion@entry=0x7f551bf7209f "m_windows.contains(c)", file=file@entry=0x7f551bf72091 "../scene.cpp", line=line@entry=430, function=function@entry=0x7f551bf72280 <KWin::Scene::windowDeleted(KWin::Deleted*)::__PRETTY_FUNCTION__> "void KWin::Scene::windowDeleted(KWin::Deleted*)") at assert.c:92
#9  0x00007f551c21b0f2 in __GI___assert_fail (assertion=0x7f551bf7209f "m_windows.contains(c)", file=0x7f551bf72091 "../scene.cpp", line=430, function=0x7f551bf72280 <KWin::Scene::windowDeleted(KWin::Deleted*)::__PRETTY_FUNCTION__> "void KWin::Scene::windowDeleted(KWin::Deleted*)") at assert.c:101
#10 0x00007f551bea0050 in KWin::Scene::windowDeleted (this=0xf0ef10, c=0x20230f0) at ../scene.cpp:430
#11 0x00007f551bf58a7c in KWin::Scene::qt_static_metacall (_o=0x5f2, _c=1522, _id=6, _a=0xffffffffffffffff) at moc_scene.cpp:80
#12 0x00007f551ab109c9 in QMetaObject::activate (sender=sender@entry=0xc30ab0, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=10, argv=argv@entry=0x7ffdf520efe0) at kernel/qobject.cpp:3716
#13 0x00007f551ab11057 in QMetaObject::activate (sender=sender@entry=0xc30ab0, m=m@entry=0x7f551c1e10a0 <KWin::Workspace::staticMetaObject>, local_signal_index=local_signal_index@entry=10, argv=argv@entry=0x7ffdf520efe0) at kernel/qobject.cpp:3582
#14 0x00007f551bf53892 in KWin::Workspace::deletedRemoved (this=this@entry=0xc30ab0, _t1=0x20230f0) at moc_workspace.cpp:699
#15 0x00007f551be0ff85 in KWin::Workspace::removeDeleted (this=0xc30ab0, c=c@entry=0x20230f0) at ../workspace.cpp:628
#16 0x00007f551bed13c7 in KWin::Deleted::~Deleted (this=this@entry=0x20230f0, __in_chrg=<optimized out>) at ../deleted.cpp:53
#17 0x00007f551bed15b9 in KWin::Deleted::~Deleted (this=0x20230f0, __in_chrg=<optimized out>) at ../deleted.cpp:55
#18 0x00007f551ab11778 in QObject::event (this=0x20230f0, e=<optimized out>) at kernel/qobject.cpp:1236
#19 0x00007f551b3e9b2c in QApplicationPrivate::notify_helper (this=0xb77a30, receiver=0x20230f0, e=0x2169c80) at kernel/qapplication.cpp:3720
#20 0x00007f551b3ef000 in QApplication::notify (this=0x7ffdf520fc90, receiver=0x20230f0, e=0x2169c80) at kernel/qapplication.cpp:3503
#21 0x00007f551aadfc2b in QCoreApplication::notifyInternal (this=0x7ffdf520fc90, receiver=0x20230f0, event=event@entry=0x2169c80) at kernel/qcoreapplication.cpp:935
#22 0x00007f551aae1c9b in sendEvent (event=0x2169c80, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:228
#23 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=52, data=0xb682f0) at kernel/qcoreapplication.cpp:1552
#24 0x00007f551992ab6e in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#25 0x00007f551995c463 in QQuickWindow::~QQuickWindow() () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#26 0x00007f5519a0ba49 in QQuickView::~QQuickView() () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#27 0x00007f5519c6a7dd in cleanup (pointer=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:54
#28 ~QScopedPointer (this=0x1c7c298, __in_chrg=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:101
#29 ~CloseWindowView (this=0x1c7c280, __in_chrg=<optimized out>) at ../../effects/presentwindows/presentwindows.h:34
#30 KWin::CloseWindowView::~CloseWindowView (this=0x1c7c280, __in_chrg=<optimized out>) at ../../effects/presentwindows/presentwindows.h:34
#31 0x00007f5519c144f6 in KWin::PresentWindowsEffect::~PresentWindowsEffect (this=0x16e2fb0, __in_chrg=<optimized out>) at ../../effects/presentwindows/presentwindows.cpp:105
#32 0x00007f5519c14639 in KWin::PresentWindowsEffect::~PresentWindowsEffect (this=0x16e2fb0, __in_chrg=<optimized out>) at ../../effects/presentwindows/presentwindows.cpp:106
#33 0x00007f551bed8f96 in KWin::EffectsHandlerImpl::~EffectsHandlerImpl (this=this@entry=0x1a35c70, __in_chrg=<optimized out>) at ../effects.cpp:313
#34 0x00007f551bed9239 in KWin::EffectsHandlerImpl::~EffectsHandlerImpl (this=0x1a35c70, __in_chrg=<optimized out>) at ../effects.cpp:316
#35 0x00007f551be97b0c in KWin::Compositor::finish (this=this@entry=0xc6f530) at ../composite.cpp:335
#36 0x00007f551be980d3 in KWin::Compositor::restart (this=0xc6f530) at ../composite.cpp:521
#37 0x00007f551bf55715 in KWin::Compositor::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at moc_composite.cpp:264
#38 0x00007f551ab109c9 in QMetaObject::activate (sender=sender@entry=0xc6f5f0, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0) at kernel/qobject.cpp:3716
#39 0x00007f551ab11057 in QMetaObject::activate (sender=sender@entry=0xc6f5f0, m=m@entry=0x7f551ad3a580 <QTimer::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0) at kernel/qobject.cpp:3582
#40 0x00007f551ab90610 in QTimer::timeout (this=this@entry=0xc6f5f0) at .moc/moc_qtimer.cpp:192
#41 0x00007f551ab1e918 in QTimer::timerEvent (this=0xc6f5f0, e=<optimized out>) at kernel/qtimer.cpp:247
#42 0x00007f551ab116f3 in QObject::event (this=0xc6f5f0, e=<optimized out>) at kernel/qobject.cpp:1267
#43 0x00007f551b3e9b2c in QApplicationPrivate::notify_helper (this=0xb77a30, receiver=0xc6f5f0, e=0x7ffdf520fa50) at kernel/qapplication.cpp:3720
#44 0x00007f551b3ef000 in QApplication::notify (this=0x7ffdf520fc90, receiver=0xc6f5f0, e=0x7ffdf520fa50) at kernel/qapplication.cpp:3503
#45 0x00007f551aadfc2b in QCoreApplication::notifyInternal (this=0x7ffdf520fc90, receiver=0xc6f5f0, event=event@entry=0x7ffdf520fa50) at kernel/qcoreapplication.cpp:935
#46 0x00007f551ab37ae5 in sendEvent (event=0x7ffdf520fa50, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:228
#47 QTimerInfoList::activateTimers (this=0xbbd578) at kernel/qtimerinfo_unix.cpp:635
#48 0x00007f551ab356a0 in QEventDispatcherUNIX::activateTimers (this=this@entry=0xba6420) at kernel/qeventdispatcher_unix.cpp:549
#49 0x00007f551ab36243 in QEventDispatcherUNIX::processEvents (this=0xba6420, flags=flags@entry=...) at kernel/qeventdispatcher_unix.cpp:611
#50 0x00007f550749896d in QUnixEventDispatcherQPA::processEvents (this=<optimized out>, flags=...) at eventdispatchers/qunixeventdispatcher.cpp:62
#51 0x00007f551aadd3e2 in QEventLoop::exec (this=this@entry=0x7ffdf520fbb0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#52 0x00007f551aae502c in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1188
#53 0x00007f551ae2431c in QGuiApplication::exec () at kernel/qguiapplication.cpp:1510
#54 0x00007f551b3e57a5 in QApplication::exec () at kernel/qapplication.cpp:2956
#55 0x00007f551c5bb8c3 in kdemain (argc=1, argv=0x7ffdf520fde8) at ../main_x11.cpp:294
#56 0x00007f551c20da40 in __libc_start_main (main=0x400790 <main(int, char**)>, argc=3, argv=0x7ffdf520fde8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffdf520fdd8) at libc-start.c:289
#57 0x00000000004007c9 in _start ()

Reported using DrKonqi
Comment 1 Martin Flöser 2016-09-02 12:25:21 UTC
I think we fixed this particular crash. We had a few fixes around this code - also lately for Plasma 5.8. So I dare to set it to fixed. If you see it again, please reopen.