Bug 484687 - plasma crash after waking monitor
Summary: plasma crash after waking monitor
Status: REPORTED
Alias: None
Product: plasmashell
Classification: Plasma
Component: generic-crash (show other bugs)
Version: 6.0.3
Platform: unspecified Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2024-03-28 22:49 UTC by sp
Modified: 2024-04-15 12:57 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
New crash information added by DrKonqi (82.30 KB, text/plain)
2024-03-28 22:49 UTC, sp
Details

Note You need to log in before you can comment on or make changes to this bug.
Description sp 2024-03-28 22:49:08 UTC
Application: plasmashell (6.0.3)

Qt Version: 6.6.2
Frameworks Version: 6.0.0
Operating System: Linux 6.5.0-26-generic x86_64
Windowing System: X11
Distribution: KDE neon 6.0
DrKonqi: 6.0.3 [CoredumpBackend]

-- Information about the crash:
monitor goes to sleep.  After pressing a key to wake it up, plasma crashes.

The crash can be reproduced sometimes.

-- Backtrace (Reduced):
#6  __pthread_kill_implementation (no_tid=0, signo=6, threadid=125444339747520) at ./nptl/pthread_kill.c:44
#7  __pthread_kill_internal (signo=6, threadid=125444339747520) at ./nptl/pthread_kill.c:78
#8  __GI___pthread_kill (threadid=125444339747520, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#9  0x000072174d442476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#10 0x000072174d4287f3 in __GI_abort () at ./stdlib/abort.c:79


Reported using DrKonqi
Comment 1 sp 2024-03-28 22:49:09 UTC
Created attachment 167906 [details]
New crash information added by DrKonqi

DrKonqi auto-attaching complete backtrace.
Comment 2 Nicolas Fella 2024-03-29 00:00:56 UTC
#6  __pthread_kill_implementation (no_tid=0, signo=6, threadid=125444339747520) at ./nptl/pthread_kill.c:44
#7  __pthread_kill_internal (signo=6, threadid=125444339747520) at ./nptl/pthread_kill.c:78
#8  __GI___pthread_kill (threadid=125444339747520, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#9  0x000072174d442476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#10 0x000072174d4287f3 in __GI_abort () at ./stdlib/abort.c:79
#11 0x000072174e0db597 in qAbort () at ./src/corelib/global/qglobal.cpp:161
#12 0x000072174e0d67f5 in qt_message_fatal<QString&> (message=..., context=...) at ./src/corelib/global/qlogging.cpp:2003
#13 qt_message(QtMsgType, const QMessageLogContext &, const char *, typedef __va_list_tag __va_list_tag *) (msgType=msgType@entry=QtFatalMsg, context=..., msg=<optimized out>, ap=ap@entry=0x7fffefc3fcd0) at ./src/corelib/global/qlogging.cpp:378
#14 0x000072174e0dbfc3 in QMessageLogger::fatal (this=<optimized out>, msg=<optimized out>) at ./src/corelib/global/qlogging.cpp:901
#15 0x000072174e0a0387 in qt_assert_x (where=where@entry=0x5d49db706d88 "void ScreenPool::handleScreenRemoved(QScreen*)", what=<optimized out>, file=file@entry=0x5d49db70700f "./shell/screenpool.cpp", line=line@entry=265) at ./src/corelib/global/qassert.cpp:77
#16 0x00005d49db64fa10 in ScreenPool::handleScreenRemoved (this=0x5d49dd19b4d0, screen=<optimized out>) at ./shell/screenpool.cpp:265
#17 0x000072174e03c3ce in QtPrivate::QSlotObjectBase::call (a=<optimized out>, r=<optimized out>, this=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ./src/corelib/kernel/qobjectdefs_impl.h:433
#18 doActivate<false> (sender=0x7fffefc407e0, signal_index=10, argv=0x7fffefc40000) at ./src/corelib/kernel/qobject.cpp:4039
#19 0x000072174e4f2646 in QGuiApplication::screenRemoved (this=<optimized out>, _t1=<optimized out>) at ./obj-x86_64-linux-gnu/src/gui/Gui_autogen/include/moc_qguiapplication.cpp:560
#20 0x000072174e54cc02 in QWindowSystemInterface::handleScreenRemoved (platformScreen=0x5d49def4d6f0) at ./src/corelib/kernel/qcoreapplication.h:96
#21 0x00007217489b155c in QXcbConnection::initializeScreensFromMonitor (this=this@entry=0x5d49dcdbab80, it=it@entry=0x7fffefc40240, xcbScreenNumber=xcbScreenNumber@entry=0, primaryScreen=primaryScreen@entry=0x7fffefc40220, initialized=initialized@entry=true) at ./src/plugins/platforms/xcb/qxcbconnection_screens.cpp:567
#22 0x00007217489b1b58 in QXcbConnection::initializeScreens (this=0x5d49dcdbab80, initialized=true) at ./src/plugins/platforms/xcb/qxcbconnection_screens.cpp:317
#23 0x00007217489a6ae2 in QXcbConnection::handleXcbEvent (this=0x5d49dcdbab80, event=0x5d49dd8c0da0) at ./src/plugins/platforms/xcb/qxcbconnection.cpp:590
#24 0x00007217489ad0ee in QXcbConnection::processXcbEvents (this=0x5d49dcdbab80, flags=...) at ./src/plugins/platforms/xcb/qxcbconnection.cpp:1087
#25 0x00007217489c4a87 in xcbSourceDispatch (source=<optimized out>) at ./src/plugins/platforms/xcb/qxcbeventdispatcher.cpp:55
#26 0x000072174c8e1d3b in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#27 0x000072174c937258 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#28 0x000072174c8df3e3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#29 0x000072174de55c30 in QEventDispatcherGlib::processEvents (this=0x5d49dce6f520, flags=...) at ./src/corelib/kernel/qeventdispatcher_glib.cpp:393
#30 0x000072174e07fceb in QEventLoop::exec (this=0x7fffefc40700, flags=...) at ./src/corelib/global/qflags.h:34
#31 0x000072174e07a36c in QCoreApplication::exec () at ./src/corelib/global/qflags.h:74
#32 0x000072174e4e9a20 in QGuiApplication::exec () at ./src/gui/kernel/qguiapplication.cpp:1925
#33 0x00007217501ee469 in QApplication::exec () at ./src/widgets/kernel/qapplication.cpp:2574
#34 0x00005d49db652bb4 in main (argc=<optimized out>, argv=<optimized out>) at ./shell/main.cpp:214
Comment 3 sp 2024-04-08 04:59:19 UTC
Video driver is amdgpu.
More or less 9 times out 10, when monitor goes to powersave/sleep, when waking it up, plasmashell crashes. So it almost always crashes.
"Crash report" lets us send "automatic" crash report. So I've been sending them also.
Comment 4 Nate Graham 2024-04-08 16:50:24 UTC
Thanks, that's indeed helpful to do.
Comment 5 Marco Martin 2024-04-15 12:10:50 UTC
https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/4238 *might* fix that, at least fixes it for the way i could reproduce (disabling internal monitor and enabling external in one go from the kcm) needs to see if it will make sentry reports go down
Comment 6 Marco Martin 2024-04-15 12:36:41 UTC
Git commit dfd160bdf6f660c10b712a664c86a2a7339e8e72 by Marco Martin.
Committed on 15/04/2024 at 12:36.
Pushed by mart into branch 'master'.

Fix redundantoutputs when the enabled screens change very quickly

on X11, when a single transaction from KScreen disables screenA and
enabled screenB, a new output order arrivers before the old output gets removed
 and in that moment the new screen will be considered redundant to che screen
that is about to be removed, causing an invalid internal state
Related: bug 456947

M  +4    -3    shell/screenpool.cpp

https://invent.kde.org/plasma/plasma-workspace/-/commit/dfd160bdf6f660c10b712a664c86a2a7339e8e72
Comment 7 Bug Janitor Service 2024-04-15 12:37:41 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/4239
Comment 8 Marco Martin 2024-04-15 12:57:00 UTC
Git commit da35849d5f4913221ba362d3961fd29526f364d5 by Marco Martin.
Committed on 15/04/2024 at 12:37.
Pushed by mart into branch 'Plasma/6.0'.

Fix redundantoutputs when the enabled screens change very quickly

on X11, when a single transaction from KScreen disables screenA and
enabled screenB, a new output order arrivers before the old output gets removed
 and in that moment the new screen will be considered redundant to che screen
that is about to be removed, causing an invalid internal state
Related: bug 456947


(cherry picked from commit dfd160bdf6f660c10b712a664c86a2a7339e8e72)

c6ff79fd Fix redundantoutputs when the enabled screens change very quickly

M  +4    -3    shell/screenpool.cpp

https://invent.kde.org/plasma/plasma-workspace/-/commit/da35849d5f4913221ba362d3961fd29526f364d5