Bug 429965 - kwin_wayland crashes when I close an app with middle click on task manager
Summary: kwin_wayland crashes when I close an app with middle click on task manager
Status: RESOLVED UPSTREAM
Alias: None
Product: kwin
Classification: Plasma
Component: wayland-generic (show other bugs)
Version: git master
Platform: Neon Linux
: NOR crash
Target Milestone: ---
Assignee: KWin default assignee
URL: https://gitlab.freedesktop.org/pipewi...
Keywords:
Depends on:
Blocks:
 
Reported: 2020-12-03 13:27 UTC by Patrick Silva
Modified: 2020-12-11 08:03 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Patrick Silva 2020-12-03 13:27:19 UTC
STEPS TO REPRODUCE
1. set task manager to close apps on middle click
2. open any app 
3. close the app with middle click on task manager

OBSERVED RESULT
kwin_wayland crashes

EXPECTED RESULT
no crash

SOFTWARE/OS VERSIONS
Operating System: KDE neon Unstable Edition
KDE Plasma Version: 5.20.80
KDE Frameworks Version: 5.77.0
Qt Version: 5.15.1


Thread 11 (Thread 4917.5331):
#0  0x00007f5d879dd5ce in epoll_wait (epfd=94, events=events@entry=0x7f5d571a88f0, maxevents=32, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
#1  0x00007f5d5579f0fb in impl_pollfd_wait (object=<optimized out>, pfd=<optimized out>, ev=0x7f5d571a8aa0, n_ev=<optimized out>, timeout=<optimized out>) at ../spa/plugins/support/system.c:154
#2  0x00007f5d55793114 in loop_iterate (object=0x559d7d78c6a8, timeout=-1) at ../spa/plugins/support/loop.c:289
#3  0x00007f5d89b236e0 in ?? () from target:/lib/x86_64-linux-gnu/libpipewire-0.3.so.0
#4  0x00007f5d87d58609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#5  0x00007f5d879dd293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 10 (Thread 4917.4929):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x7f5d87784fd8 <QTWTF::pageheap_memory+57592>) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x7f5d87784f88 <QTWTF::pageheap_memory+57512>, cond=0x7f5d87784fb0 <QTWTF::pageheap_memory+57552>) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=cond@entry=0x7f5d87784fb0 <QTWTF::pageheap_memory+57552>, mutex=mutex@entry=0x7f5d87784f88 <QTWTF::pageheap_memory+57512>) at pthread_cond_wait.c:638
#3  0x00007f5d8768763a in QTWTF::TCMalloc_PageHeap::scavengerThread (this=0x7f5d87776ee0 <QTWTF::pageheap_memory>) at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:2359
#4  0x00007f5d8768765f in QTWTF::TCMalloc_PageHeap::runScavengerThread (context=<optimized out>) at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:1464
#5  0x00007f5d87d58609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#6  0x00007f5d879dd293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 9 (Thread 4917.4926):
#0  0x00007f5d879d0aff in __GI___poll (fds=0x7f5d50004e60, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f5d858db1ae in ?? () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f5d858db2e3 in g_main_context_iteration () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f5d8807e232 in QEventDispatcherGlib::processEvents (this=0x7f5d50000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#4  0x00007f5d8802243b in QEventLoop::exec (this=this@entry=0x7f5d5d055cc0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
#5  0x00007f5d87e3e982 in QThread::exec (this=this@entry=0x559d7d2ecc60) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#6  0x00007f5d86b44d69 in QQmlThreadPrivate::run (this=0x559d7d2ecc60) at qml/ftw/qqmlthread.cpp:155
#7  0x00007f5d87e3fb1c in QThreadPrivate::start (arg=0x559d7d2ecc60) at thread/qthread_unix.cpp:329
#8  0x00007f5d87d58609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#9  0x00007f5d879dd293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 8 (Thread 4917.4924):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x559d7c98d728) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x559d7c98d6d8, cond=0x559d7c98d700) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=cond@entry=0x559d7c98d700, mutex=mutex@entry=0x559d7c98d6d8) at pthread_cond_wait.c:638
#3  0x00007f5d7a54197b in cnd_wait (mtx=0x559d7c98d6d8, cond=0x559d7c98d700) at ../include/c11/threads_posix.h:155
#4  util_queue_thread_func (input=input@entry=0x559d7c7aded0) at ../src/util/u_queue.c:275
#5  0x00007f5d7a54158b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
#6  0x00007f5d87d58609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007f5d879dd293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 7 (Thread 4917.4923):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x559d7c98d728) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x559d7c98d6d8, cond=0x559d7c98d700) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=cond@entry=0x559d7c98d700, mutex=mutex@entry=0x559d7c98d6d8) at pthread_cond_wait.c:638
#3  0x00007f5d7a54197b in cnd_wait (mtx=0x559d7c98d6d8, cond=0x559d7c98d700) at ../include/c11/threads_posix.h:155
#4  util_queue_thread_func (input=input@entry=0x559d7c6e5810) at ../src/util/u_queue.c:275
#5  0x00007f5d7a54158b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
#6  0x00007f5d87d58609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007f5d879dd293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 6 (Thread 4917.4922):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x559d7c98d728) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x559d7c98d6d8, cond=0x559d7c98d700) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=cond@entry=0x559d7c98d700, mutex=mutex@entry=0x559d7c98d6d8) at pthread_cond_wait.c:638
#3  0x00007f5d7a54197b in cnd_wait (mtx=0x559d7c98d6d8, cond=0x559d7c98d700) at ../include/c11/threads_posix.h:155
#4  util_queue_thread_func (input=input@entry=0x559d7c75de50) at ../src/util/u_queue.c:275
#5  0x00007f5d7a54158b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
#6  0x00007f5d87d58609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007f5d879dd293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 5 (Thread 4917.4921):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x559d7c98d728) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x559d7c98d6d8, cond=0x559d7c98d700) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=cond@entry=0x559d7c98d700, mutex=mutex@entry=0x559d7c98d6d8) at pthread_cond_wait.c:638
#3  0x00007f5d7a54197b in cnd_wait (mtx=0x559d7c98d6d8, cond=0x559d7c98d700) at ../include/c11/threads_posix.h:155
#4  util_queue_thread_func (input=input@entry=0x559d7c7b37d0) at ../src/util/u_queue.c:275
#5  0x00007f5d7a54158b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
#6  0x00007f5d87d58609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007f5d879dd293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 4 (Thread 4917.4920):
#0  0x00007f5d879d0aff in __GI___poll (fds=0x7f5d70004630, nfds=2, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f5d858db1ae in ?? () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f5d858db2e3 in g_main_context_iteration () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f5d8807e232 in QEventDispatcherGlib::processEvents (this=0x7f5d70000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#4  0x00007f5d8802243b in QEventLoop::exec (this=this@entry=0x7f5d7bffece0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
#5  0x00007f5d87e3e982 in QThread::exec (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#6  0x00007f5d87e3fb1c in QThreadPrivate::start (arg=0x559d7c7144c0) at thread/qthread_unix.cpp:329
#7  0x00007f5d87d58609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#8  0x00007f5d879dd293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 4917.4919):
#0  0x00007f5d879d0aff in __GI___poll (fds=0x7f5d74005240, nfds=2, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f5d858db1ae in ?? () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f5d858db2e3 in g_main_context_iteration () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f5d8807e232 in QEventDispatcherGlib::processEvents (this=0x7f5d74000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#4  0x00007f5d8802243b in QEventLoop::exec (this=this@entry=0x7f5d80e89ce0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
#5  0x00007f5d87e3e982 in QThread::exec (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#6  0x00007f5d87e3fb1c in QThreadPrivate::start (arg=0x559d7c712800) at thread/qthread_unix.cpp:329
#7  0x00007f5d87d58609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#8  0x00007f5d879dd293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 4917.4918):
#0  0x00007f5d879d0aff in __GI___poll (fds=0x7f5d7c0176f0, nfds=5, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f5d858db1ae in ?? () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f5d858db2e3 in g_main_context_iteration () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f5d8807e232 in QEventDispatcherGlib::processEvents (this=0x7f5d7c000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#4  0x00007f5d8802243b in QEventLoop::exec (this=this@entry=0x7f5d8171dcb0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
#5  0x00007f5d87e3e982 in QThread::exec (this=this@entry=0x7f5d89385d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#6  0x00007f5d89301f4b in QDBusConnectionManager::run (this=0x7f5d89385d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:179
#7  0x00007f5d87e3fb1c in QThreadPrivate::start (arg=0x7f5d89385d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:329
#8  0x00007f5d87d58609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#9  0x00007f5d879dd293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 4917.4917):
#0  0x0000559d00000001 in ?? ()
#1  0x00007f5d89b56f97 in pw_stream_destroy () from target:/lib/x86_64-linux-gnu/libpipewire-0.3.so.0
#2  0x0000559d7b2b88f1 in KWin::PipeWireStream::~PipeWireStream (this=0x559d7c848170, __in_chrg=<optimized out>) at ./screencast/pipewirestream.cpp:189
#3  0x0000559d7b2b28ea in KWin::WindowStream::~WindowStream (this=0x559d7c848170, __in_chrg=<optimized out>) at ./screencast/screencastmanager.cpp:40
#4  KWin::WindowStream::~WindowStream (this=0x559d7c848170, __in_chrg=<optimized out>) at ./screencast/screencastmanager.cpp:40
#5  0x00007f5d8805a94e in QtPrivate::QSlotObjectBase::call (a=0x7ffef71f9c30, r=0x559d7c827280, this=0x559d7c818d70) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#6  doActivate<false> (sender=0x559d7c848170, signal_index=5, argv=0x7ffef71f9c30) at kernel/qobject.cpp:3886
#7  0x00007f5d8805a94e in QtPrivate::QSlotObjectBase::call (a=0x7ffef71f9d70, r=0x559d7c848170, this=0x559d7d7a34c0) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#8  doActivate<false> (sender=0x559d7c855be0, signal_index=9, argv=0x7ffef71f9d70) at kernel/qobject.cpp:3886
#9  0x00007f5d88053d17 in QMetaObject::activate (sender=sender@entry=0x559d7c855be0, m=m@entry=0x7f5d89ae6da0 <KWin::Toplevel::staticMetaObject>, local_signal_index=local_signal_index@entry=6, argv=argv@entry=0x7ffef71f9d70) at kernel/qobject.cpp:3946
#10 0x00007f5d8982b082 in KWin::Toplevel::windowClosed (this=this@entry=0x559d7c855be0, _t1=<optimized out>, _t1@entry=0x559d7c855be0, _t2=<optimized out>, _t2@entry=0x559d7c7eb250) at ./obj-x86_64-linux-gnu/kwin_autogen/EWIEGA46WW/moc_toplevel.cpp:822
#11 0x00007f5d899f24d4 in KWin::XdgSurfaceClient::destroyClient (this=0x559d7c855be0) at ./xdgshellclient.cpp:338
#12 0x00007f5d8805a94e in QtPrivate::QSlotObjectBase::call (a=0x7ffef71f9eb0, r=0x559d7c855be0, this=0x559d7c7f3ba0) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#13 doActivate<false> (sender=0x559d7c80ffa0, signal_index=0, argv=0x7ffef71f9eb0) at kernel/qobject.cpp:3886
#14 0x00007f5d88053d17 in QMetaObject::activate (sender=sender@entry=0x559d7c80ffa0, m=m@entry=0x7f5d882b2b20 <QObject::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffef71f9eb0) at kernel/qobject.cpp:3946
#15 0x00007f5d88053dd3 in QObject::destroyed (this=this@entry=0x559d7c80ffa0, _t1=<optimized out>, _t1@entry=0x559d7c80ffa0) at .moc/moc_qobject.cpp:219
#16 0x00007f5d88058ba5 in QObject::~QObject (this=<optimized out>, __in_chrg=<optimized out>) at kernel/qobject.cpp:992
#17 0x00007f5d8948354d in KWaylandServer::XdgToplevelInterface::~XdgToplevelInterface (this=0x559d7c80ffa0, __in_chrg=<optimized out>) at ./src/server/xdgshell_interface.cpp:529
#18 0x00007f5d894b79e0 in QtWaylandServer::xdg_toplevel::destroy_func (client_resource=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:212
#19 0x00007f5d862ac5bf in destroy_resource (element=element@entry=0x559d7d732420, data=data@entry=0x0, flags=0) at ../src/wayland-server.c:724
#20 0x00007f5d862ac644 in wl_resource_destroy (resource=0x559d7d732420) at ../src/wayland-server.c:741
#21 0x00007f5d84c24ff5 in ffi_call_unix64 () at ../src/x86/unix64.S:101
#22 0x00007f5d84c2440a in ffi_call_int (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=<optimized out>) at ../src/x86/ffi64.c:669
#23 0x00007f5d862b0628 in wl_closure_invoke (closure=closure@entry=0x559d7d52c880, flags=flags@entry=2, target=<optimized out>, target@entry=0x559d7d732420, opcode=opcode@entry=0, data=<optimized out>, data@entry=0x559d7d736240) at ../src/connection.c:1018
#24 0x00007f5d862ac9e2 in wl_client_connection_data (fd=<optimized out>, mask=<optimized out>, data=0x559d7d736240) at ../src/wayland-server.c:432
#25 0x00007f5d862ae65a in wl_event_loop_dispatch (loop=0x559d7c6cf550, timeout=timeout@entry=0) at ../src/event-loop.c:1027
#26 0x00007f5d8943e4a3 in KWaylandServer::Display::Private::dispatch (this=<optimized out>) at ./src/server/display.cpp:136
#27 0x00007f5d8805a94e in QtPrivate::QSlotObjectBase::call (a=0x7ffef71fa710, r=0x559d7c6f8fe0, this=0x559d7d3bb400) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#28 doActivate<false> (sender=0x559d7d3bb680, signal_index=3, argv=0x7ffef71fa710) at kernel/qobject.cpp:3886
#29 0x00007f5d88053d17 in QMetaObject::activate (sender=sender@entry=0x559d7d3bb680, m=m@entry=0x7f5d882bbb60 <QSocketNotifier::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffef71fa710) at kernel/qobject.cpp:3946
#30 0x00007f5d8805e9c3 in QSocketNotifier::activated (this=this@entry=0x559d7d3bb680, _t1=..., _t2=<optimized out>, _t3=...) at .moc/moc_qsocketnotifier.cpp:178
#31 0x00007f5d8805f163 in QSocketNotifier::event (this=0x559d7d3bb680, e=0x7ffef71fa9e0) at kernel/qsocketnotifier.cpp:302
#32 0x00007f5d88c9eda3 in QApplicationPrivate::notify_helper (this=this@entry=0x559d7c6bca50, receiver=receiver@entry=0x559d7d3bb680, e=e@entry=0x7ffef71fa9e0) at kernel/qapplication.cpp:3630
#33 0x00007f5d88ca7b98 in QApplication::notify (this=0x7ffef71fadc0, receiver=0x559d7d3bb680, e=0x7ffef71fa9e0) at kernel/qapplication.cpp:3154
#34 0x00007f5d8802392a in QCoreApplication::notifyInternal2 (receiver=0x559d7d3bb680, event=0x7ffef71fa9e0) at ../../include/QtCore/5.15.1/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:325
#35 0x00007f5d8807b45b in QEventDispatcherUNIXPrivate::activateSocketNotifiers (this=0x559d7c6c9260) at kernel/qeventdispatcher_unix.cpp:304
#36 0x00007f5d8807b8bb in QEventDispatcherUNIX::processEvents (this=<optimized out>, flags=...) at kernel/qeventdispatcher_unix.cpp:511
#37 0x0000559d7b3038e1 in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
#38 0x00007f5d8802243b in QEventLoop::exec (this=this@entry=0x7ffef71fab70, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
#39 0x00007f5d8802a5e4 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#40 0x0000559d7b2957cc in main (argc=<optimized out>, argv=<optimized out>) at ./main_wayland.cpp:704
Detaching from program: target:/usr/bin/kwin_wayland, process 4917
Ending remote debugging.
[Inferior 1 (process 4917) detached]
Comment 1 Patrick Silva 2020-12-10 12:33:24 UTC
no longer reproducible on neon unstable.
Comment 2 Vlad Zahorodnii 2020-12-11 08:03:05 UTC
It was a bug in libpipewire.