Bug 453502

Summary: [Wayland] Plasma crashes in AppletInterface::screenGeometry() when I switch between 'Switch to external screen' and 'Unify outputs' multi-monitor modes
Product: [Plasma] plasmashell Reporter: Patrick Silva <bugseforuns>
Component: generic-multiscreenAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED WORKSFORME    
Severity: crash CC: aleixpol, nate, notmart
Priority: NOR    
Version: master   
Target Milestone: 1.0   
Platform: Neon   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Patrick Silva 2022-05-07 13:14:27 UTC
STEPS TO REPRODUCE
1. use Wayland session
2. connect an external monitor to hdmi port
3. press meta+p and choose 'Switch to external screen'
4. press meta+p again and choose 'Unify outputs'

OBSERVED RESULT
Plasma crashes

EXPECTED RESULT
no crash

SOFTWARE/OS VERSIONS
Operating System: KDE neon Unstable Edition
KDE Plasma Version: 5.24.80
KDE Frameworks Version: 5.94.0
Qt Version: 5.15.3
Graphics Platform: Wayland


Thread 11 (Thread 0x7fce9ffff700 (LWP 4628)):
#0  0x00007fcea9bb69cf in __GI___poll (fds=0x7fce90004a60, nfds=3, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fcea844536e in g_main_context_poll (priority=<optimized out>, n_fds=3, fds=0x7fce90004a60, timeout=<optimized out>, context=0x7fce90000c20) at ../../../glib/gmain.c:4346
#2  g_main_context_iterate (context=context@entry=0x7fce90000c20, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4042
#3  0x00007fcea84454a3 in g_main_context_iteration (context=0x7fce90000c20, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108
#4  0x00007fceaa187642 in QEventDispatcherGlib::processEvents (this=0x7fce90000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#5  0x00007fceaa12b87b in QEventLoop::exec (this=this@entry=0x7fce9fffebb0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
#6  0x00007fcea9f45442 in QThread::exec (this=this@entry=0x7fceaac63d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#7  0x00007fceaabdff4b in QDBusConnectionManager::run (this=0x7fceaac63d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:179
#8  0x00007fcea9f46623 in QThreadPrivate::start (arg=0x7fceaac63d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:331
#9  0x00007fcea98da609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#10 0x00007fcea9bc3163 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 10 (Thread 0x7fce9d94d700 (LWP 4630)):
#0  0x00007fcea9bb69cf in __GI___poll (fds=0x7fce88004e60, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fcea844536e in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7fce88004e60, timeout=<optimized out>, context=0x7fce88000c20) at ../../../glib/gmain.c:4346
#2  g_main_context_iterate (context=context@entry=0x7fce88000c20, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4042
#3  0x00007fcea84454a3 in g_main_context_iteration (context=0x7fce88000c20, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108
#4  0x00007fceaa187642 in QEventDispatcherGlib::processEvents (this=0x7fce88000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#5  0x00007fceaa12b87b in QEventLoop::exec (this=this@entry=0x7fce9d94cbe0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
#6  0x00007fcea9f45442 in QThread::exec (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#7  0x00007fcea9f46623 in QThreadPrivate::start (arg=0x55a2a539fe00) at thread/qthread_unix.cpp:331
#8  0x00007fcea98da609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#9  0x00007fcea9bc3163 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 9 (Thread 0x7fce9caa8700 (LWP 4631)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x55a2a53eeb78) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55a2a53eeb28, cond=0x55a2a53eeb50) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x55a2a53eeb50, mutex=0x55a2a53eeb28) at pthread_cond_wait.c:638
#3  0x00007fce8f1475eb in cnd_wait (mtx=0x55a2a53eeb28, cond=0x55a2a53eeb50) at ../include/c11/threads_posix.h:155
#4  util_queue_thread_func (input=input@entry=0x55a2a561d670) at ../src/util/u_queue.c:294
#5  0x00007fce8f1471eb in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
#6  0x00007fcea98da609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007fcea9bc3163 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 8 (Thread 0x7fce6908b700 (LWP 4669)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x55a2a581fb70) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55a2a581fb20, cond=0x55a2a581fb48) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x55a2a581fb48, mutex=0x55a2a581fb20) at pthread_cond_wait.c:638
#3  0x00007fcea9f4c68b in QWaitConditionPrivate::wait (deadline=..., this=0x55a2a581fb20) at thread/qwaitcondition_unix.cpp:146
#4  QWaitCondition::wait (this=this@entry=0x55a2a6039aa8, mutex=mutex@entry=0x55a2a6039aa0, deadline=...) at thread/qwaitcondition_unix.cpp:225
#5  0x00007fceabbcd074 in QSGRenderThreadEventQueue::takeEvent (wait=true, this=0x55a2a6039a98) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qdeadlinetimer.h:68
#6  QSGRenderThread::processEventsAndWaitForMore (this=this@entry=0x55a2a6039a00) at scenegraph/qsgthreadedrenderloop.cpp:936
#7  0x00007fceabbcd4e9 in QSGRenderThread::run (this=0x55a2a6039a00) at scenegraph/qsgthreadedrenderloop.cpp:1053
#8  0x00007fcea9f46623 in QThreadPrivate::start (arg=0x55a2a6039a00) at thread/qthread_unix.cpp:331
#9  0x00007fcea98da609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#10 0x00007fcea9bc3163 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 7 (Thread 0x7fce9edee700 (LWP 4629)):
#0  0x00007fcea9bb69cf in __GI___poll (fds=0x7fce94004e60, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fcea844536e in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7fce94004e60, timeout=<optimized out>, context=0x7fce94000c20) at ../../../glib/gmain.c:4346
#2  g_main_context_iterate (context=context@entry=0x7fce94000c20, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4042
#3  0x00007fcea84454a3 in g_main_context_iteration (context=0x7fce94000c20, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108
#4  0x00007fceaa187642 in QEventDispatcherGlib::processEvents (this=0x7fce94000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#5  0x00007fceaa12b87b in QEventLoop::exec (this=this@entry=0x7fce9ededbc0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
#6  0x00007fcea9f45442 in QThread::exec (this=this@entry=0x55a2a50a58e0) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#7  0x00007fceab76bb39 in QQmlThreadPrivate::run (this=0x55a2a50a58e0) at qml/ftw/qqmlthread.cpp:155
#8  0x00007fcea9f46623 in QThreadPrivate::start (arg=0x55a2a50a58e0) at thread/qthread_unix.cpp:331
#9  0x00007fcea98da609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#10 0x00007fcea9bc3163 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 6 (Thread 0x7fcea49a8700 (LWP 4627)):
#0  0x00007fcea9bb69cf in __GI___poll (fds=fds@entry=0x7fcea49a7be0, nfds=nfds@entry=2, timeout=timeout@entry=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fcea7f9ca36 in poll (__timeout=-1, __nfds=2, __fds=0x7fcea49a7be0) at /usr/include/x86_64-linux-gnu/bits/poll2.h:46
#2  QtWaylandClient::EventThread::run (this=0x55a2a4f88fe0) at qwaylanddisplay.cpp:208
#3  0x00007fcea9f46623 in QThreadPrivate::start (arg=0x55a2a4f88fe0) at thread/qthread_unix.cpp:331
#4  0x00007fcea98da609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#5  0x00007fcea9bc3163 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 5 (Thread 0x7fce6ab6a700 (LWP 4663)):
#0  0x00007fcea9bb69cf in __GI___poll (fds=0x7fce5c006750, nfds=1, timeout=3499307) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fcea844536e in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7fce5c006750, timeout=<optimized out>, context=0x7fce5c000c20) at ../../../glib/gmain.c:4346
#2  g_main_context_iterate (context=context@entry=0x7fce5c000c20, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4042
#3  0x00007fcea84454a3 in g_main_context_iteration (context=0x7fce5c000c20, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108
#4  0x00007fceaa187642 in QEventDispatcherGlib::processEvents (this=0x7fce5c000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#5  0x00007fceaa12b87b in QEventLoop::exec (this=this@entry=0x7fce6ab69ba0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
#6  0x00007fcea9f45442 in QThread::exec (this=this@entry=0x55a2a98dd500) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#7  0x00007fce69fa00bc in KCupsConnection::run (this=0x55a2a98dd500) at ./libkcups/KCupsConnection.cpp:289
#8  0x00007fcea9f46623 in QThreadPrivate::start (arg=0x55a2a98dd500) at thread/qthread_unix.cpp:331
#9  0x00007fcea98da609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#10 0x00007fcea9bc3163 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 4 (Thread 0x7fce83fff700 (LWP 4632)):
#0  0x00007fcea9bb69cf in __GI___poll (fds=0x7fce7c004a30, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fcea844536e in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7fce7c004a30, timeout=<optimized out>, context=0x7fce7c000c20) at ../../../glib/gmain.c:4346
#2  g_main_context_iterate (context=context@entry=0x7fce7c000c20, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4042
#3  0x00007fcea84454a3 in g_main_context_iteration (context=0x7fce7c000c20, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108
#4  0x00007fceaa187642 in QEventDispatcherGlib::processEvents (this=0x7fce7c000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#5  0x00007fceaa12b87b in QEventLoop::exec (this=this@entry=0x7fce83ffeba0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
#6  0x00007fcea9f45442 in QThread::exec (this=this@entry=0x55a2a608e5c0) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#7  0x00007fceabb0743a in QQuickPixmapReader::run (this=0x55a2a608e5c0) at util/qquickpixmapcache.cpp:1024
#8  0x00007fcea9f46623 in QThreadPrivate::start (arg=0x55a2a608e5c0) at thread/qthread_unix.cpp:331
#9  0x00007fcea98da609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#10 0x00007fcea9bc3163 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7fce817fa700 (LWP 4640)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x55a2a614e630) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55a2a614e5e0, cond=0x55a2a614e608) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x55a2a614e608, mutex=0x55a2a614e5e0) at pthread_cond_wait.c:638
#3  0x00007fcea9f4c68b in QWaitConditionPrivate::wait (deadline=..., this=0x55a2a614e5e0) at thread/qwaitcondition_unix.cpp:146
#4  QWaitCondition::wait (this=this@entry=0x55a2a614db68, mutex=mutex@entry=0x55a2a614db60, deadline=...) at thread/qwaitcondition_unix.cpp:225
#5  0x00007fceabbcd074 in QSGRenderThreadEventQueue::takeEvent (wait=true, this=0x55a2a614db58) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qdeadlinetimer.h:68
#6  QSGRenderThread::processEventsAndWaitForMore (this=this@entry=0x55a2a614dac0) at scenegraph/qsgthreadedrenderloop.cpp:936
#7  0x00007fceabbcd4e9 in QSGRenderThread::run (this=0x55a2a614dac0) at scenegraph/qsgthreadedrenderloop.cpp:1053
#8  0x00007fcea9f46623 in QThreadPrivate::start (arg=0x55a2a614dac0) at thread/qthread_unix.cpp:331
#9  0x00007fcea98da609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#10 0x00007fcea9bc3163 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7fcea51a9700 (LWP 4626)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x55a2a4f88cb0) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55a2a4f88c60, cond=0x55a2a4f88c88) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x55a2a4f88c88, mutex=0x55a2a4f88c60) at pthread_cond_wait.c:638
#3  0x00007fcea9f4c68b in QWaitConditionPrivate::wait (deadline=..., this=0x55a2a4f88c60) at thread/qwaitcondition_unix.cpp:146
#4  QWaitCondition::wait (this=this@entry=0x55a2a4f82da0, mutex=mutex@entry=0x55a2a4f82d98, deadline=...) at thread/qwaitcondition_unix.cpp:225
#5  0x00007fcea7f9c9dd in QtWaylandClient::EventThread::waitForReading (this=0x55a2a4f82d60) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qdeadlinetimer.h:68
#6  QtWaylandClient::EventThread::run (this=0x55a2a4f82d60) at qwaylanddisplay.cpp:206
#7  0x00007fcea9f46623 in QThreadPrivate::start (arg=0x55a2a4f82d60) at thread/qthread_unix.cpp:331
#8  0x00007fcea98da609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#9  0x00007fcea9bc3163 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7fcea5cf09c0 (LWP 4625)):
#0  __GI_raise (sig=sig@entry=11) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007fceac046ff5 in KCrash::defaultCrashHandler (sig=11) at ./src/kcrash.cpp:618
#2  <signal handler called>
#3  PlasmaQuick::ContainmentView::containment (this=0x0) at ./src/plasmaquick/containmentview.cpp:256
#4  0x000055a2a3adc6e6 in ShellCorona::screenForContainment (this=0x55a2a4f6d750, containment=<optimized out>) at ./shell/shellcorona.cpp:1947
#5  0x000055a2a3adc65f in ShellCorona::screenForContainment (this=0x55a2a4f6d750, containment=<optimized out>) at ./shell/shellcorona.cpp:1939
#6  0x00007fcea4061d21 in AppletInterface::screenGeometry (this=0x55a2a55a6e90) at ./src/scriptengines/qml/plasmoid/appletinterface.cpp:622
#7  0x00007fcea40658f8 in AppletInterface::qt_static_metacall (_o=_o@entry=0x55a2a55a6e90, _c=_c@entry=QMetaObject::ReadProperty, _id=_id@entry=25, _a=_a@entry=0x7fff2c491890) at ./obj-x86_64-linux-gnu/src/scriptengines/qml/plasma_appletscript_declarative_autogen/include/moc_appletinterface.cpp:771
#8  0x00007fcea406717b in AppletInterface::qt_metacall (this=0x55a2a55a6e90, _c=QMetaObject::ReadProperty, _id=25, _a=0x7fff2c491890) at ./obj-x86_64-linux-gnu/src/scriptengines/qml/plasma_appletscript_declarative_autogen/include/moc_appletinterface.cpp:872
#9  0x00007fceab730cd0 in QV4::QQmlValueTypeReference::readReferenceValue (this=0x7fce9e1af510) at /usr/include/c++/9/bits/atomic_base.h:413
#10 QV4::QQmlValueTypeReference::readReferenceValue (this=0x7fce9e1af510) at qml/qqmlvaluetypewrapper.cpp:125
#11 0x00007fceab731b09 in QV4::QQmlValueTypeWrapper::virtualResolveLookupGetter (object=0x7fce9e1af510, engine=0x55a2a508bbe0, lookup=0x55a2a9957060) at qml/qqmlvaluetypewrapper.cpp:446
#12 0x00007fceab731025 in QV4::QQmlValueTypeWrapper::<lambda()>::operator() (__closure=<synthetic pointer>) at qml/qqmlvaluetypewrapper.cpp:468
#13 QV4::QQmlValueTypeWrapper::lookupGetter (lookup=0x55a2a9957060, engine=0x55a2a508bbe0, object=...) at qml/qqmlvaluetypewrapper.cpp:480
#14 0x00007fce6909624c in ?? ()
#15 0x0000000000000000 in ?? ()
Comment 1 Nate Graham 2022-05-09 17:15:00 UTC
Backtrace is not quite the same as Bug 373885; looks like a different bug.
Comment 2 Nate Graham 2023-04-21 15:01:27 UTC
I'm not able to reproduce this issue in Plasma 5.27, which has a *ton* of multi-monitor improvements to fix issues such as this one. Can you please upgrade to 5.27.4 or later and try again? Thanks!
Comment 3 Bug Janitor Service 2023-05-06 03:46:13 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 4 Bug Janitor Service 2023-05-21 03:45:54 UTC
This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!