Bug 374038 - kwin_x11 crach
Summary: kwin_x11 crach
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: core (show other bugs)
Version: git master
Platform: Ubuntu Linux
: VHI crash
Target Milestone: ---
Assignee: KWin default assignee
URL: https://phabricator.kde.org/D3808
Keywords: drkonqi
: 374147 374155 374265 (view as bug list)
Depends on:
Blocks:
 
Reported: 2016-12-22 13:37 UTC by rооt
Modified: 2016-12-28 20:13 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:
mgraesslin: X11+
mgraesslin: ReviewRequest+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description rооt 2016-12-22 13:37:36 UTC
Application: kwin_x11 (5.8.90)

Qt Version: 5.7.0
Frameworks Version: 5.30.0
Operating System: Linux 4.9.0-native x86_64
Distribution: Ubuntu Zesty Zapus (development branch)

-- Information about the crash:
today kwin_x11 started crashing, when add sound and displayed on-screen icons kwin crashing

The crash can be reproduced every time.

-- 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 0x7ff07847d3c0 (LWP 8858))]

Thread 4 (Thread 0x7ff0590ba700 (LWP 8865)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:225
#1  0x00007ff075bfbc06 in QWaitConditionPrivate::wait_relative (time=30000, this=0x5616437b5c60) at thread/qwaitcondition_unix.cpp:133
#2  QWaitConditionPrivate::wait (time=30000, this=0x5616437b5c60) at thread/qwaitcondition_unix.cpp:141
#3  QWaitCondition::wait (this=this@entry=0x5616437bc340, mutex=mutex@entry=0x5616437c1a60, time=30000) at thread/qwaitcondition_unix.cpp:215
#4  0x00007ff075bf7432 in QThreadPoolThread::run (this=0x5616437bc330) at thread/qthreadpool.cpp:133
#5  0x00007ff075bfae08 in QThreadPrivate::start (arg=0x5616437bc330) at thread/qthread_unix.cpp:344
#6  0x00007ff071c546ca in start_thread (arg=0x7ff0590ba700) at pthread_create.c:333
#7  0x00007ff077f770ff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105

Thread 3 (Thread 0x7ff05ad2a700 (LWP 8863)):
#0  0x00007ff077f6b1d1 in __GI_ppoll (fds=fds@entry=0x7ff05400ac68, nfds=nfds@entry=1, timeout=<optimized out>, timeout@entry=0x0, sigmask=sigmask@entry=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:39
#1  0x00007ff075e24c71 in ppoll (__ss=<optimized out>, __timeout=<optimized out>, __nfds=<optimized out>, __fds=<optimized out>) at /usr/include/x86_64-linux-gnu/bits/poll2.h:77
#2  qt_ppoll (timeout_ts=0x0, nfds=1, fds=0x7ff05400ac68) at kernel/qcore_unix.cpp:91
#3  qt_safe_poll (fds=0x7ff05400ac68, nfds=nfds@entry=1, timeout_ts=timeout_ts@entry=0x0) at kernel/qcore_unix.cpp:112
#4  0x00007ff075e26558 in QEventDispatcherUNIX::processEvents (this=<optimized out>, flags=...) at kernel/qeventdispatcher_unix.cpp:495
#5  0x00007ff075dd332a in QEventLoop::exec (this=this@entry=0x7ff05ad29c50, flags=..., flags@entry=...) at kernel/qeventloop.cpp:210
#6  0x00007ff075bf6163 in QThread::exec (this=this@entry=0x7ff078612d60 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread.cpp:507
#7  0x00007ff07859d745 in QDBusConnectionManager::run (this=0x7ff078612d60 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:196
#8  0x00007ff075bfae08 in QThreadPrivate::start (arg=0x7ff078612d60 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:344
#9  0x00007ff071c546ca in start_thread (arg=0x7ff05ad2a700) at pthread_create.c:333
#10 0x00007ff077f770ff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105

Thread 2 (Thread 0x7ff0609a5700 (LWP 8861)):
#0  0x00007ff077f6b10d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007ff0770b5c62 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#2  0x00007ff0770b78d7 in xcb_wait_for_event () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#3  0x00007ff061653829 in QXcbEventReader::run (this=0x561643726ec0) at qxcbconnection.cpp:1337
#4  0x00007ff075bfae08 in QThreadPrivate::start (arg=0x561643726ec0) at thread/qthread_unix.cpp:344
#5  0x00007ff071c546ca in start_thread (arg=0x7ff0609a5700) at pthread_create.c:333
#6  0x00007ff077f770ff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105

Thread 1 (Thread 0x7ff07847d3c0 (LWP 8858)):
[KCrash Handler]
#6  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
#7  0x00007ff077ea63ea in __GI_abort () at abort.c:89
#8  0x00007ff077e9cbb7 in __assert_fail_base (fmt=<optimized out>, assertion=assertion@entry=0x7ff077bd96f0 "pendingGeometryUpdate() == PendingGeometryNone || areGeometryUpdatesBlocked()", file=file@entry=0x7ff077bd9658 "/build/kwin-m6vc7g/kwin-5.8.4+p17.04+git20161222.0259/geometry.cpp", line=line@entry=2089, function=function@entry=0x7ff077bd9420 <KWin::AbstractClient::move(int, int, KWin::AbstractClient::ForceGeometry_t)::__PRETTY_FUNCTION__> "void KWin::AbstractClient::move(int, int, KWin::AbstractClient::ForceGeometry_t)") at assert.c:92
#9  0x00007ff077e9cc62 in __GI___assert_fail (assertion=assertion@entry=0x7ff077bd96f0 "pendingGeometryUpdate() == PendingGeometryNone || areGeometryUpdatesBlocked()", file=file@entry=0x7ff077bd9658 "/build/kwin-m6vc7g/kwin-5.8.4+p17.04+git20161222.0259/geometry.cpp", line=line@entry=2089, function=function@entry=0x7ff077bd9420 <KWin::AbstractClient::move(int, int, KWin::AbstractClient::ForceGeometry_t)::__PRETTY_FUNCTION__> "void KWin::AbstractClient::move(int, int, KWin::AbstractClient::ForceGeometry_t)") at assert.c:101
#10 0x00007ff077ac4744 in KWin::AbstractClient::move (this=0x56164390da60, x=838, y=610, force=KWin::AbstractClient::NormalGeometrySet) at ./geometry.cpp:2089
#11 0x00007ff077a312cb in KWin::AbstractClient::<lambda(KWin::Toplevel*, const QRect&)>::operator() (c=<optimized out>, old=..., __closure=0x5616438a8cc0) at ./abstract_client.cpp:79
#12 QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1>, QtPrivate::List<KWin::Toplevel*, const QRect&>, void, KWin::AbstractClient::AbstractClient()::<lambda(KWin::Toplevel*, const QRect&)> >::call (arg=<optimized out>, f=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:501
#13 QtPrivate::Functor<KWin::AbstractClient::AbstractClient()::<lambda(KWin::Toplevel*, const QRect&)>, 2>::call<QtPrivate::List<KWin::Toplevel*, QRect const&>, void> (arg=<optimized out>, f=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:558
#14 QtPrivate::QFunctorSlotObject<KWin::AbstractClient::AbstractClient()::<lambda(KWin::Toplevel*, const QRect&)>, 2, QtPrivate::List<KWin::Toplevel*, const QRect&>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x5616438a8cb0, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:198
#15 0x00007ff075e0134e in QtPrivate::QSlotObjectBase::call (a=0x7ffe00ec9de0, r=0x56164390da60, this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobject_impl.h:130
#16 QMetaObject::activate (sender=sender@entry=0x56164390da60, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=4, argv=argv@entry=0x7ffe00ec9de0) at kernel/qobject.cpp:3723
#17 0x00007ff075e018f7 in QMetaObject::activate (sender=sender@entry=0x56164390da60, m=m@entry=0x7ff077e67220 <KWin::Toplevel::staticMetaObject>, local_signal_index=local_signal_index@entry=4, argv=argv@entry=0x7ffe00ec9de0) at kernel/qobject.cpp:3602
#18 0x00007ff077bb49d7 in KWin::Toplevel::geometryShapeChanged (this=this@entry=0x56164390da60, _t1=<optimized out>, _t1@entry=0x56164390da60, _t2=...) at ./obj-x86_64-linux-gnu/kwin_automoc.dir/moc_toplevel_5LY56G5H6Z2ILF.cpp:718
#19 0x00007ff077ac31ab in KWin::Client::setGeometry (this=0x56164390da60, x=<optimized out>, y=<optimized out>, w=243, h=243, force=<optimized out>) at ./geometry.cpp:2009
#20 0x00007ff077ac48f1 in KWin::AbstractClient::setGeometry (force=KWin::AbstractClient::NormalGeometrySet, r=..., this=0x56164390da60) at ./abstract_client.h:1050
#21 KWin::AbstractClient::blockGeometryUpdates (this=this@entry=0x56164390da60, block=block@entry=false) at ./geometry.cpp:2137
#22 0x00007ff077aa6aca in KWin::Client::manage (this=this@entry=0x56164390da60, w=w@entry=18874467, isMapped=isMapped@entry=true) at ./manage.cpp:640
#23 0x00007ff077a241a4 in KWin::Workspace::createClient (this=this@entry=0x561643802db0, w=18874467, is_mapped=is_mapped@entry=true) at ./workspace.cpp:517
#24 0x00007ff077a29cd3 in KWin::Workspace::init (this=this@entry=0x561643802db0) at ./workspace.cpp:324
#25 0x00007ff077a2aaf3 in KWin::Workspace::Workspace (this=0x561643802db0, sessionKey=...) at ./workspace.cpp:210
#26 0x00007ff077a84c63 in KWin::Application::createWorkspace (this=0x7ffe00ecae90) at ./main.cpp:274
#27 0x00007ff07823ceae in KWin::ApplicationX11::<lambda()>::<lambda()>::operator() (__closure=0x56164375db00) at ./main_x11.cpp:251
#28 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KWin::ApplicationX11::performStartup()::<lambda()>::<lambda()> >::call (arg=<optimized out>, f=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:501
#29 QtPrivate::Functor<KWin::ApplicationX11::performStartup()::<lambda()>::<lambda()>, 0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:558
#30 QtPrivate::QFunctorSlotObject<KWin::ApplicationX11::performStartup()::<lambda()>::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x56164375daf0, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:198
#31 0x00007ff075e0134e in QtPrivate::QSlotObjectBase::call (a=0x7ffe00eca6f0, r=0x7ffe00ecae90, this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobject_impl.h:130
#32 QMetaObject::activate (sender=0x561643761e40, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>) at kernel/qobject.cpp:3723
#33 0x00007ff07823d20f in KWin::ApplicationX11::<lambda()>::operator() (__closure=0x561643767b40) at ./main_x11.cpp:264
#34 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KWin::ApplicationX11::performStartup()::<lambda()> >::call (arg=<optimized out>, f=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:501
#35 QtPrivate::Functor<KWin::ApplicationX11::performStartup()::<lambda()>, 0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:558
#36 QtPrivate::QFunctorSlotObject<KWin::ApplicationX11::performStartup()::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x561643767b30, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:198
#37 0x00007ff075e0134e in QtPrivate::QSlotObjectBase::call (a=0x7ffe00eca870, r=0x561643776d90, this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobject_impl.h:130
#38 QMetaObject::activate (sender=0x561643776d90, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>) at kernel/qobject.cpp:3723
#39 0x00007ff076bf33bb in KSelectionOwner::Private::claimSucceeded() () from /usr/lib/x86_64-linux-gnu/libKF5WindowSystem.so.5
#40 0x00007ff075e01e43 in QObject::event (this=0x561643776d90, e=<optimized out>) at kernel/qobject.cpp:1285
#41 0x00007ff0766c45dc in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x561643776d90, e=0x7ffe00ecabc0) at kernel/qapplication.cpp:3799
#42 0x00007ff0766cbd91 in QApplication::notify (this=0x7ffe00ecae90, receiver=0x561643776d90, e=0x7ffe00ecabc0) at kernel/qapplication.cpp:3556
#43 0x00007ff075dd5340 in QCoreApplication::notifyInternal2 (receiver=0x561643776d90, event=event@entry=0x7ffe00ecabc0) at kernel/qcoreapplication.cpp:988
#44 0x00007ff075e2884e in QCoreApplication::sendEvent (event=0x7ffe00ecabc0, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#45 QTimerInfoList::activateTimers (this=this@entry=0x56164375b180) at kernel/qtimerinfo_unix.cpp:644
#46 0x00007ff075e255cc in QEventDispatcherUNIXPrivate::activateTimers (this=this@entry=0x56164375b0e0) at kernel/qeventdispatcher_unix.cpp:249
#47 0x00007ff075e267b8 in QEventDispatcherUNIX::processEvents (this=<optimized out>, flags=...) at kernel/qeventdispatcher_unix.cpp:509
#48 0x00007ff0616cc6dd in QUnixEventDispatcherQPA::processEvents (this=<optimized out>, flags=...) at eventdispatchers/qunixeventdispatcher.cpp:68
#49 0x00007ff075dd332a in QEventLoop::exec (this=this@entry=0x7ffe00ecad80, flags=..., flags@entry=...) at kernel/qeventloop.cpp:210
#50 0x00007ff075ddba8c in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1261
#51 0x00007ff076120e3c in QGuiApplication::exec () at kernel/qguiapplication.cpp:1639
#52 0x00007ff0766c4535 in QApplication::exec () at kernel/qapplication.cpp:2975
#53 0x00007ff07823f192 in kdemain (argc=<optimized out>, argv=0x7ffe00ecb018) at ./main_x11.cpp:468
#54 0x00007ff077e8f3f1 in __libc_start_main (main=0x561642586820 <main>, argc=3, argv=0x7ffe00ecb018, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe00ecb008) at ../csu/libc-start.c:291
#55 0x000056164258685a in _start ()

Possible duplicates by query: bug 359869.

Reported using DrKonqi
Comment 1 Martin Flöser 2016-12-22 16:03:55 UTC
You are using an unreleased version in an unreleased distribution. I'm sorry, but there is a fair amount of chance that this setup is just broken. We don't track such issues.
Comment 2 Kai Uwe Broulik 2016-12-24 20:45:47 UTC
I just had the same crash. I changed volume and then kwin kept crashing until I managed to kill plasmashell.

Does this have anything to do with your "update OSD when its size changes" patches? (or was that about the kwin internal OSD?)OSD)
Comment 3 Kai Uwe Broulik 2016-12-24 21:01:29 UTC
Reverting 6383f8304711719fe22371474138efc144adc750 fixes (works around) the issue
Comment 4 Martin Flöser 2016-12-25 17:07:56 UTC
I admit that I didn't test on X11. Can you try moving the new connect from AbstractClient to ShellClient? Then on X11 we don't have this, but on Wayland it would work nevertheless.
Comment 5 Martin Flöser 2016-12-25 17:08:23 UTC
*** Bug 374147 has been marked as a duplicate of this bug. ***
Comment 6 Martin Flöser 2016-12-26 09:53:03 UTC
*** Bug 374155 has been marked as a duplicate of this bug. ***
Comment 7 Martin Flöser 2016-12-26 10:14:12 UTC
Fix at: https://phabricator.kde.org/D3808
Comment 8 Martin Flöser 2016-12-27 16:37:03 UTC
Git commit bba18a1ba812f3a147173edc19516f0e00e7c855 by Martin Gräßlin.
Committed on 27/12/2016 at 16:36.
Pushed by graesslin into branch 'master'.

Fix the osd re-placement on X11

Summary:
6383f8304711719fe22371474138efc144adc750 introduced a regression hitting
an assert on X11 when an osd window is added.

This change tries to address this by adding a GeometryUpdateBlocker
around the change. The hit assertion is:

    pendingGeometryUpdate() == PendingGeometryNone ||
    areGeometryUpdatesBlocked()

By using a GeometryUpdateBlocker the second condition becomes true
and we no longer hit the condition.

Test Plan:
Manual tested both on X11 and Wayland, Wayland autotest
still passes

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D3808

M  +1    -0    abstract_client.cpp

https://commits.kde.org/kwin/bba18a1ba812f3a147173edc19516f0e00e7c855
Comment 9 Laurent Bonnaud 2016-12-28 09:57:46 UTC
Thank you for the quick fix!

I confirm that the bug is fixed in this neon package version:

Package: kwin-x11
Version: 4:5.8.5+p16.04+git20161228.0449-0
Comment 10 Martin Flöser 2016-12-28 20:13:26 UTC
*** Bug 374265 has been marked as a duplicate of this bug. ***