Bug 419017 - Plasma crashes on Wayland when I click on button to close "Status and Notifications" popup while its tooltip is visible
Summary: Plasma crashes on Wayland when I click on button to close "Status and Notific...
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: generic-wayland (show other bugs)
Version: master
Platform: Neon Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-03-19 12:59 UTC by Patrick Silva
Modified: 2020-09-11 00:42 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Patrick Silva 2020-03-19 12:59:50 UTC
STEPS TO REPRODUCE
1. start Wayland session
2. click on the arrow beside the digital clock to show hidden systray icons
3. move cursor outside of the just clicked arrow and hover over it again
4. click on the arrow while "Close popup" tooltip is visible

OBSERVED RESULT
plasma crashes

EXPECTED RESULT
no crash

SOFTWARE/OS VERSIONS
Operating System: KDE neon Unstable Edition
KDE Plasma Version: 5.18.80
KDE Frameworks Version: 5.69.0
Qt Version: 5.14.1


Thread 11 (Thread 0x7fff8ee35700 (LWP 6802)):
#0  0x00007fffee8f39f3 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5555571c7714)
    at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  0x00007fffee8f39f3 in __pthread_cond_wait_common (abstime=0x0, mutex=0x5555571c76c0, cond=0x5555571c76e8)
    at pthread_cond_wait.c:502
#2  0x00007fffee8f39f3 in __pthread_cond_wait (cond=0x5555571c76e8, mutex=0x5555571c76c0) at pthread_cond_wait.c:655
#3  0x00007ffff1da4d9b in QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., this=0x5555571c76c0)
    at thread/qwaitcondition_unix.cpp:146
#4  0x00007ffff1da4d9b in QWaitCondition::wait(QMutex*, QDeadlineTimer) (this=<optimized out>, mutex=0x55555caf0960, deadline=...) at thread/qwaitcondition_unix.cpp:225
#5  0x00007ffff1da4f19 in QWaitCondition::wait(QMutex*, unsigned long) (this=this@entry=0x55555caf0968, mutex=mutex@entry=0x55555caf0960, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:208
#6  0x00007ffff5e9c1d3 in QSGRenderThreadEventQueue::takeEvent(bool) (wait=true, this=0x55555caf0958)
    at scenegraph/qsgthreadedrenderloop.cpp:255
#7  0x00007ffff5e9c1d3 in QSGRenderThread::processEventsAndWaitForMore() (this=this@entry=0x55555caf08c0)
    at scenegraph/qsgthreadedrenderloop.cpp:905
#8  0x00007ffff5e9c631 in QSGRenderThread::run() (this=0x55555caf08c0) at scenegraph/qsgthreadedrenderloop.cpp:1000
#9  0x00007ffff1d9e7ec in QThreadPrivate::start(void*) (arg=0x55555caf08c0) at thread/qthread_unix.cpp:342
#10 0x00007fffee8ed6db in start_thread (arg=0x7fff8ee35700) at pthread_create.c:463
#11 0x00007ffff169388f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 10 (Thread 0x7fff8f7fe700 (LWP 6801)):
#0  0x00007fffee8f39f3 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x555557281d10)
    at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  0x00007fffee8f39f3 in __pthread_cond_wait_common (abstime=0x0, mutex=0x555557281cc0, cond=0x555557281ce8)
    at pthread_cond_wait.c:502
#2  0x00007fffee8f39f3 in __pthread_cond_wait (cond=0x555557281ce8, mutex=0x555557281cc0) at pthread_cond_wait.c:655
#3  0x00007ffff1da4d9b in QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., this=0x555557281cc0)
    at thread/qwaitcondition_unix.cpp:146
#4  0x00007ffff1da4d9b in QWaitCondition::wait(QMutex*, QDeadlineTimer) (this=<optimized out>, mutex=0x555557284090, deadline=...) at thread/qwaitcondition_unix.cpp:225
#5  0x00007ffff1da4f19 in QWaitCondition::wait(QMutex*, unsigned long) (this=this@entry=0x555557284098, mutex=mutex@entry=0x555557284090, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:208
#6  0x00007ffff5e9c1d3 in QSGRenderThreadEventQueue::takeEvent(bool) (wait=true, this=0x555557284088)
    at scenegraph/qsgthreadedrenderloop.cpp:255
#7  0x00007ffff5e9c1d3 in QSGRenderThread::processEventsAndWaitForMore() (this=this@entry=0x555557283ff0)
    at scenegraph/qsgthreadedrenderloop.cpp:905
#8  0x00007ffff5e9c631 in QSGRenderThread::run() (this=0x555557283ff0) at scenegraph/qsgthreadedrenderloop.cpp:1000
#9  0x00007ffff1d9e7ec in QThreadPrivate::start(void*) (arg=0x555557283ff0) at thread/qthread_unix.cpp:342
#10 0x00007fffee8ed6db in start_thread (arg=0x7fff8f7fe700) at pthread_create.c:463
#11 0x00007ffff169388f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 9 (Thread 0x7fff8ffff700 (LWP 6800)):
#0  0x00007fffee8f3ed9 in futex_reltimed_wait_cancelable (private=<optimized out>, reltime=0x7fff8fffebf0, expected=0, futex_word=0x555559f265a0) at ../sysdeps/unix/sysv/linux/futex-internal.h:142
#1  0x00007fffee8f3ed9 in __pthread_cond_wait_common (abstime=0x7fff8fffeca0, mutex=0x555559f26550, cond=0x555559f26578)
    at pthread_cond_wait.c:533
#2  0x00007fffee8f3ed9 in __pthread_cond_timedwait (cond=0x555559f26578, mutex=0x555559f26550, abstime=0x7fff8fffeca0)
    at pthread_cond_wait.c:667
#3  0x00007ffff1da4d2a in QWaitConditionPrivate::wait_relative(QDeadlineTimer) (this=0x555559f26550, deadline=...)
    at thread/qwaitcondition_unix.cpp:136
#4  0x00007ffff1da4d2a in QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., this=0x555559f26550)
    at thread/qwaitcondition_unix.cpp:144
#5  0x00007ffff1da4d2a in QWaitCondition::wait(QMutex*, QDeadlineTimer) (this=<optimized out>, mutex=0x55555a0413c8, deadline=...) at thread/qwaitcondition_unix.cpp:225
#6  0x00007ffff1da4ee6 in QWaitCondition::wait(QMutex*, unsigned long) (this=this@entry=0x5555558e7b00, mutex=mutex@entry=0x55555a0413c8, time=<optimized out>) at thread/qwaitcondition_unix.cpp:209
#7  0x00007ffff1da2275 in QThreadPoolThread::run() (this=0x5555558e7af0) at thread/qthreadpool.cpp:139
#8  0x00007ffff1d9e7ec in QThreadPrivate::start(void*) (arg=0x5555558e7af0) at thread/qthread_unix.cpp:342
#9  0x00007fffee8ed6db in start_thread (arg=0x7fff8ffff700) at pthread_create.c:463
#10 0x00007ffff169388f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 8 (Thread 0x7fffa14d8700 (LWP 6793)):
#0  0x00007fffee8f39f3 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x55555700a5f4)
    at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  0x00007fffee8f39f3 in __pthread_cond_wait_common (abstime=0x0, mutex=0x55555700a5a0, cond=0x55555700a5c8)
    at pthread_cond_wait.c:502
#2  0x00007fffee8f39f3 in __pthread_cond_wait (cond=0x55555700a5c8, mutex=0x55555700a5a0) at pthread_cond_wait.c:655
#3  0x00007ffff1da4d9b in QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., this=0x55555700a5a0)
    at thread/qwaitcondition_unix.cpp:146
#4  0x00007ffff1da4d9b in QWaitCondition::wait(QMutex*, QDeadlineTimer) (this=<optimized out>, mutex=0x55555704cbf0, deadline=...) at thread/qwaitcondition_unix.cpp:225
#5  0x00007ffff1da4f19 in QWaitCondition::wait(QMutex*, unsigned long) (this=this@entry=0x55555704cbf8, mutex=mutex@entry=0x55555704cbf0, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:208
#6  0x00007ffff5e9c1d3 in QSGRenderThreadEventQueue::takeEvent(bool) (wait=true, this=0x55555704cbe8)
    at scenegraph/qsgthreadedrenderloop.cpp:255
#7  0x00007ffff5e9c1d3 in QSGRenderThread::processEventsAndWaitForMore() (this=this@entry=0x55555704cb50)
    at scenegraph/qsgthreadedrenderloop.cpp:905
#8  0x00007ffff5e9c631 in QSGRenderThread::run() (this=0x55555704cb50) at scenegraph/qsgthreadedrenderloop.cpp:1000
#9  0x00007ffff1d9e7ec in QThreadPrivate::start(void*) (arg=0x55555704cb50) at thread/qthread_unix.cpp:342
#10 0x00007fffee8ed6db in start_thread (arg=0x7fffa14d8700) at pthread_create.c:463
#11 0x00007ffff169388f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 7 (Thread 0x7fffbbfff700 (LWP 6785)):
#0  0x00007fffee8f39f3 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x55555610a310)
    at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  0x00007fffee8f39f3 in __pthread_cond_wait_common (abstime=0x0, mutex=0x55555610a2c0, cond=0x55555610a2e8)
    at pthread_cond_wait.c:502
#2  0x00007fffee8f39f3 in __pthread_cond_wait (cond=0x55555610a2e8, mutex=0x55555610a2c0) at pthread_cond_wait.c:655
#3  0x00007ffff1da4d9b in QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., this=0x55555610a2c0)
    at thread/qwaitcondition_unix.cpp:146
#4  0x00007ffff1da4d9b in QWaitCondition::wait(QMutex*, QDeadlineTimer) (this=<optimized out>, mutex=0x55555610a0b0, deadline=...) at thread/qwaitcondition_unix.cpp:225
#5  0x00007ffff1da4f19 in QWaitCondition::wait(QMutex*, unsigned long) (this=this@entry=0x55555610a0b8, mutex=mutex@entry=0x55555610a0b0, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:208
#6  0x00007ffff5e9c1d3 in QSGRenderThreadEventQueue::takeEvent(bool) (wait=true, this=0x55555610a0a8)
    at scenegraph/qsgthreadedrenderloop.cpp:255
#7  0x00007ffff5e9c1d3 in QSGRenderThread::processEventsAndWaitForMore() (this=this@entry=0x55555610a010)
    at scenegraph/qsgthreadedrenderloop.cpp:905
#8  0x00007ffff5e9c631 in QSGRenderThread::run() (this=0x55555610a010) at scenegraph/qsgthreadedrenderloop.cpp:1000
#9  0x00007ffff1d9e7ec in QThreadPrivate::start(void*) (arg=0x55555610a010) at thread/qthread_unix.cpp:342
#10 0x00007fffee8ed6db in start_thread (arg=0x7fffbbfff700) at pthread_create.c:463
#11 0x00007ffff169388f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 6 (Thread 0x7fffc3848700 (LWP 6782)):
#0  0x00007ffff1686bf9 in __GI___poll (fds=0x7fffb40062f0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fffeb45a5c9 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fffeb45a6dc in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff1fed0bc in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffb4000b20, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#4  0x00007ffff1f8c63a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffc3847d30, flags=..., flags@entry=...) at kernel/qeventloop.cpp:225
#5  0x00007ffff1d9d317 in QThread::exec() (this=this@entry=0x555556062a30) at thread/qthread.cpp:536
#6  0x00007ffff5ddea86 in QQuickPixmapReader::run() (this=0x555556062a30) at util/qquickpixmapcache.cpp:987
#7  0x00007ffff1d9e7ec in QThreadPrivate::start(void*) (arg=0x555556062a30) at thread/qthread_unix.cpp:342
#8  0x00007fffee8ed6db in start_thread (arg=0x7fffc3848700) at pthread_create.c:463
#9  0x00007ffff169388f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 5 (Thread 0x7fffc4049700 (LWP 6781)):
#0  0x00007ffff1686bf9 in __GI___poll (fds=0x7fffbc0029e0, nfds=3, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fffeb45a5c9 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fffeb45a6dc in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff1fed0bc in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffbc000b20, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#4  0x00007ffff1f8c63a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffc4048da0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:225
#5  0x00007ffff1d9d317 in QThread::exec() (this=<optimized out>) at thread/qthread.cpp:536
#6  0x00007ffff1d9e7ec in QThreadPrivate::start(void*) (arg=0x5555560dfdb0) at thread/qthread_unix.cpp:342
#7  0x00007fffee8ed6db in start_thread (arg=0x7fffc4049700) at pthread_create.c:463
#8  0x00007ffff169388f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 4 (Thread 0x7fffd2510700 (LWP 6780)):
#0  0x00007fffee8f39f3 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x555555d6aa2c)
    at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  0x00007fffee8f39f3 in __pthread_cond_wait_common (abstime=0x0, mutex=0x555555d6a9d8, cond=0x555555d6aa00)
    at pthread_cond_wait.c:502
#2  0x00007fffee8f39f3 in __pthread_cond_wait (cond=0x555555d6aa00, mutex=0x555555d6a9d8) at pthread_cond_wait.c:655
#3  0x00007fffd363decb in  () at /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#4  0x00007fffd363dac7 in  () at /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#5  0x00007fffee8ed6db in start_thread (arg=0x7fffd2510700) at pthread_create.c:463
#6  0x00007ffff169388f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7fffe1202700 (LWP 6779)):
#0  0x00007ffff1686bf9 in __GI___poll (fds=0x7fffd4002de0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fffeb45a5c9 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fffeb45a6dc in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff1fed0bc in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffd4000b20, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#4  0x00007ffff1f8c63a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffe1201d80, flags=..., flags@entry=...) at kernel/qeventloop.cpp:225
#5  0x00007ffff1d9d317 in QThread::exec() (this=this@entry=0x5555558fca00) at thread/qthread.cpp:536
#6  0x00007ffff5949605 in QQmlThreadPrivate::run() (this=0x5555558fca00) at qml/ftw/qqmlthread.cpp:155
#7  0x00007ffff1d9e7ec in QThreadPrivate::start(void*) (arg=0x5555558fca00) at thread/qthread_unix.cpp:342
#8  0x00007fffee8ed6db in start_thread (arg=0x7fffe1202700) at pthread_create.c:463
#9  0x00007ffff169388f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7fffe307b700 (LWP 6778)):
#0  0x00007ffff1686bf9 in __GI___poll (fds=0x7fffdc002de0, nfds=3, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fffeb45a5c9 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fffeb45a6dc in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff1fed0bc in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffdc000b20, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#4  0x00007ffff1f8c63a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffe307ad70, flags=..., flags@entry=...) at kernel/qeventloop.cpp:225
#5  0x00007ffff1d9d317 in QThread::exec() (this=this@entry=0x7ffff3f0cda0 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread.cpp:536
#6  0x00007ffff3c94555 in QDBusConnectionManager::run() (this=0x7ffff3f0cda0 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:179
#7  0x00007ffff1d9e7ec in QThreadPrivate::start(void*) (arg=0x7ffff3f0cda0 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:342
#8  0x00007fffee8ed6db in start_thread (arg=0x7fffe307b700) at pthread_create.c:463
#9  0x00007ffff169388f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7ffff7f9ac80 (LWP 6774)):
#0  0x00007ffff15b0e97 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff15b2801 in __GI_abort () at abort.c:79
#2  0x00007ffff1d7a59b in qt_message_fatal (context=..., message=<synthetic pointer>...) at global/qlogging.cpp:1894
#3  0x00007ffff1d7a59b in QMessageLogger::fatal(char const*, ...) const (this=this@entry=0x7fffffffd950, msg=msg@entry=0x7fffe5420900 "The Wayland connection experienced a fatal error: %s") at global/qlogging.cpp:893
#4  0x00007fffe53925d8 in QtWaylandClient::QWaylandDisplay::checkError() const (this=<optimized out>)
    at qwaylanddisplay.cpp:198
#5  0x00007fffe539264e in QtWaylandClient::QWaylandDisplay::flushRequests() (this=0x555555814dc0)
    at qwaylanddisplay.cpp:209
#6  0x00007ffff1fc8dc9 in doActivate<false>(QObject*, int, void**) (sender=0x555555882730, signal_index=4, argv=0x7fffffffda30) at kernel/qobject.cpp:3882
#7  0x00007ffff1fc38a2 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x555555882730, m=m@entry=0x7ffff245b240 <QAbstractEventDispatcher::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x0) at kernel/qobject.cpp:3930
#8  0x00007ffff1f8a4b3 in QAbstractEventDispatcher::awake() (this=this@entry=0x555555882730)
    at .moc/moc_qabstracteventdispatcher.cpp:149
#9  0x00007ffff1fed0fb in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x555555882730, flags=...) at kernel/qeventdispatcher_glib.cpp:430
#10 0x00007ffff1f8c63a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffdb50, flags=..., flags@entry=...) at kernel/qeventloop.cpp:225
#11 0x00007ffff1f95db0 in QCoreApplication::exec() () at kernel/qcoreapplication.cpp:1400
#12 0x00005555555752d4 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at ./shell/main.cpp:228
Comment 1 Claudius Ellsel 2020-09-10 23:19:31 UTC
Cannot reproduce:

Operating System: Manjaro Linux
KDE Plasma Version: 5.19.5
KDE Frameworks Version: 5.73.0
Qt Version: 5.15.0
Kernel Version: 5.8.6-1-MANJARO
OS Type: 64-bit
Processors: 4 × Intel® Xeon® CPU E3-1225 v3 @ 3.20GHz
Memory: 3.8 GiB of RAM
Graphics Processor: Mesa DRI Intel® HD Graphics P4600/P4700

Do you still encounter this bug?
Comment 2 Patrick Silva 2020-09-10 23:38:00 UTC
no longer reproducible on neon unstable at least.

Operating System: KDE neon Unstable Edition
KDE Plasma Version: 5.19.80
KDE Frameworks Version: 5.74.0
Qt Version: 5.15.0
Comment 3 Patrick Silva 2020-09-11 00:42:17 UTC
it's not crashing on Arch too. Let's consider this fixed.

Operating System: Arch Linux
KDE Plasma Version: 5.19.5
KDE Frameworks Version: 5.73.0
Qt Version: 5.15.1