Created attachment 154922 [details] log from journalctl SUMMARY *** Hello, I'm experiencing very frequent crashes of plasmashell on Wayland. It crashes at least once a day. It's not a big issue because it restarts immediately, but I wanted to report it. I can't run gdb against plasmashell because it freezes the whole system (https://forum.kde.org/viewtopic.php?f=305&t=176813) , but I followed the documentation and looked at journalctl (attached). I can't understand why it crashes. In the attached journalctl you can see that I was playing Dead Cells (X11) but I experienced these crashes also when watching Netflix. The only thing that changes before and after the crash is the audio output in the plasma panel. Before the crash I can change the audio output from the audio icon in the system tray using the "tree lines" button which shows the available outputs. After the crash the "tree lines" button is not present anymore. I can change the audio output only through the System Settings. I don't know if this is useful to know. *** Operating System: RebornOS Linux (Arch) KDE Plasma Version: 5.26.4 KDE Frameworks Version: 5.101.0 Qt Version: 5.15.7 Kernel Version: 6.1.1-arch1-1 (64-bit) Graphics Platform: Wayland
Thank you for the bug report! Please note that Plasma 5.25.4 is not supported for much longer by KDE; supported versions are 5.24, and 5.26 or newer. If at all possible please upgrade to a supported version and verify that the bug is still happening there. If you're unsure how to do this, contact your distributor about it.
I've selected the wrong version (5.25.4) instead of the real one (5.26.4). I've updated the bug report
Created attachment 154926 [details] second log from journalctl It just happened again, without any X11 application running. I attach the new journalctl hoping it can be useful
The journal log is not useful, we need a backtrace to tell us anything I'm afraid. From the forum thread: >I run "sudo gdb plasmashell [PID]" or "sudo gdb [PID]" and it seems to work, but the whole plasmashell freezes. you need to type "continue" into the gdb terminal afterwards You might also find a trace via "coredumpctl dump plasmashell"
(In reply to David Edmundson from comment #4) > From the forum thread: > >I run "sudo gdb plasmashell [PID]" or "sudo gdb [PID]" and it seems to work, but the whole plasmashell freezes. > you need to type "continue" into the gdb terminal afterwards Thanks, now it seems to work fine! I'll try to get the backtrace and I'll post it here > You might also find a trace via "coredumpctl dump plasmashell" Unfortunately this command returns "No match", but I'll try with a normal gdb as above.
Hello, I've started the "gdb plasmashell" and reproduced the crash. gdb reports "[New process 714] [Inferior 1 (process 714) exited with code 01]" but when I enter "backtrace" it says "(gdb) backtrace No stack." Maybe plasmashell is not the right process to monitor? Any idea?
Hello, after days of testing, I may have catch the "broken pipe" backtrace. Hoping this can help Thread 1 "plasmashell" received signal SIGPIPE, Broken pipe. 0x00007f388c5100ef in write () from /usr/lib/libc.so.6 (gdb) backtrace #0 0x00007f388c5100ef in write () at /usr/lib/libc.so.6 #1 0x00007f388c87fbe1 in () at /usr/lib/libKF5GuiAddons.so.5 #2 0x00007f388c874f8e in () at /usr/lib/libKF5GuiAddons.so.5 #3 0x00007f388e4844f6 in () at /usr/lib/libffi.so.8 #4 0x00007f388e480f5e in () at /usr/lib/libffi.so.8 #5 0x00007f388e483b73 in ffi_call () at /usr/lib/libffi.so.8 #6 0x00007f388f08b645 in () at /usr/lib/libwayland-client.so.0 #7 0x00007f388f08be03 in () at /usr/lib/libwayland-client.so.0 #8 0x00007f388f08bffc in wl_display_dispatch_queue_pending () at /usr/lib/libwayland-client.so.0 #9 0x00007f388d722bf6 in QtWaylandClient::QWaylandDisplay::flushRequests() () at /usr/lib/libQt5WaylandClient.so.5 #10 0x00007f388ccbdc40 in () at /usr/lib/libQt5Core.so.5 #11 0x00007f388ccd7cc7 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5 #12 0x00007f388cc8574c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5 #13 0x00007f388cc90269 in QCoreApplication::exec() () at /usr/lib/libQt5Core.so.5 #14 0x00005586df8331ef in () #15 0x00007f388c43c290 in () at /usr/lib/libc.so.6 #16 0x00007f388c43c34a in __libc_start_main () at /usr/lib/libc.so.6 #17 0x00005586df8335a5 in ()
Thanks. Now we need a backtrace with debug symbols, because I'm afraid lines like this don't tell us anything: #1 0x00007f388c87fbe1 in () at /usr/lib/libKF5GuiAddons.so.5 #2 0x00007f388c874f8e in () at /usr/lib/libKF5GuiAddons.so.5 See https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports#Arch_Linux.
Hello, I've reproduced the crash and created the following backtrace after installing the . I'm not sure it gives you more data than the preovious one. It seems different, but I can't understand if it's useful. Thread 1 "plasmashell" received signal SIGPIPE, Broken pipe. 0x00007f2e775103af in write () from /usr/lib/libc.so.6 (gdb) bt full #0 0x00007f2e775103af in write () at /usr/lib/libc.so.6 #1 0x00007f2e7873f060 in QtWaylandClient::QWaylandDataSource::data_source_send(QString const&, int) () at /usr/lib/libQt5WaylandClient.so.5 #2 0x00007f2e787497fe in QtWayland::wl_data_source::handle_send(void*, wl_data_source*, char const*, int) () at /usr/lib/libQt5WaylandClient.so.5 #3 0x00007f2e794154f6 in () at /usr/lib/libffi.so.8 #4 0x00007f2e79411f5e in () at /usr/lib/libffi.so.8 #5 0x00007f2e79414b73 in ffi_call () at /usr/lib/libffi.so.8 #6 0x00007f2e79fde645 in () at /usr/lib/libwayland-client.so.0 #7 0x00007f2e79fdee03 in () at /usr/lib/libwayland-client.so.0 #8 0x00007f2e79fdeffc in wl_display_dispatch_queue_pending () at /usr/lib/libwayland-client.so.0 #9 0x00007f2e78722bf6 in QtWaylandClient::QWaylandDisplay::flushRequests() () at /usr/lib/libQt5WaylandClient.so.5 #10 0x00007f2e77cbeae0 in () at /usr/lib/libQt5Core.so.5 #11 0x00007f2e77cd8b67 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5 #12 0x00007f2e77c865ac in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5 #13 0x00007f2e77c910d9 in QCoreApplication::exec() () at /usr/lib/libQt5Core.so.5 #14 0x0000556679a211ef in () #15 0x00007f2e7743c290 in () at /usr/lib/libc.so.6 #16 0x00007f2e7743c34a in __libc_start_main () at /usr/lib/libc.so.6 #17 0x0000556679a215a5 in () I tried to save the core file but it seems that it didn't work fine: (gdb) generate-core-file warning: target file /proc/715/cmdline contained unexpected null characters warning: Memory read failed for corefile section, 4096 bytes at 0xffffffffff600000. Saved corefile core.715 moreover the "coredumpctl list" command doesn't show it.
Sorry for the double post, but I've manually installed more debug symbols and get this backtrace. I hope it's useful, otherwise I have to give up because I really don't know how to make it work Thread 1 "plasmashell" received signal SIGPIPE, Broken pipe. __GI___libc_write (nbytes=40, buf=0x561e8a631068, fd=25) at ../sysdeps/unix/sysv/linux/write.c:26 26 return SYSCALL_CANCEL (write, fd, buf, nbytes); (gdb) backtrace #0 __GI___libc_write (nbytes=40, buf=0x561e8a631068, fd=25) at ../sysdeps/unix/sysv/linux/write.c:26 #1 __GI___libc_write (fd=25, buf=0x561e8a631068, nbytes=40) at ../sysdeps/unix/sysv/linux/write.c:24 #2 0x00007f501993f060 in QtWaylandClient::QWaylandDataSource::data_source_send(QString const&, int) () at /usr/lib/libQt5WaylandClient.so.5 #3 0x00007f50199497fe in QtWayland::wl_data_source::handle_send(void*, wl_data_source*, char const*, int) () at /usr/lib/libQt5WaylandClient.so.5 #4 0x00007f501ad484f6 in ffi_call_unix64 () at ../src/x86/unix64.S:104 #5 0x00007f501ad44f5e in ffi_call_int (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=<optimized out>) at ../src/x86/ffi64.c:673 #6 0x00007f501ad47b73 in ffi_call (cif=cif@entry=0x7fff8356a290, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7fff8356a360) at ../src/x86/ffi64.c:710 #7 0x00007f501b250645 in wl_closure_invoke (closure=closure@entry=0x7f500801bd90, target=<optimized out>, target@entry=0x561e8a631190, opcode=opcode@entry=1, data=<optimized out>, flags=1) at ../wayland-1.21.0/src/connection.c:1025 #8 0x00007f501b250e03 in dispatch_event (display=display@entry=0x561e891d1eb0, queue=0x561e891d1f80) at ../wayland-1.21.0/src/wayland-client.c:1595 #9 0x00007f501b250ffc in dispatch_queue (queue=0x561e891d1f80, display=0x561e891d1eb0) --Type <RET> for more, q to quit, c to continue without paging-- at ../wayland-1.21.0/src/wayland-client.c:1741 #10 wl_display_dispatch_queue_pending (display=0x561e891d1eb0, queue=0x561e891d1f80) at ../wayland-1.21.0/src/wayland-client.c:1983 #11 0x00007f5019922bf6 in QtWaylandClient::QWaylandDisplay::flushRequests() () at /usr/lib/libQt5WaylandClient.so.5 #12 0x00007f5018ebeae0 in doActivate<false>(QObject*, int, void**) (sender=0x561e8920c680, signal_index=4, argv=0x7fff8356a590) at kernel/qobject.cpp:3935 #13 0x00007f5018ed8b67 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x561e8920c680, flags=...) at kernel/qeventdispatcher_glib.cpp:430 #14 0x00007f5018e865ac in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fff8356a6b0, flags=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69 #15 0x00007f5018e910d9 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #16 0x0000561e878bf1ef in () #17 0x00007f501863c290 in __libc_start_call_main (main=main@entry=0x561e878bc240, argc=argc@entry=2, argv=argv@entry=0x7fff8356aa18) at ../sysdeps/nptl/libc_start_call_main.h:58 #18 0x00007f501863c34a in __libc_start_main_impl (main=0x561e878bc240, argc=2, argv=0x7fff8356aa18, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff8356aa08) at ../csu/libc-start.c:381 #19 0x0000561e878bf5a5 in ()
Looks like maybe in clipboard stuff?
Created attachment 155467 [details] The button that disappears after the crash I don't know if it's relevant, but the only difference I noted before and after the crash, is that the little button to change the audio profile disappears (see image). When the crash occurs, the button disappears. If I restart the system, the button comes back until the next crash. I can still change the audio profile from the Audio section in the "Settings", but the quick-button in the image is not visible after the crash.
We should be protected against SIGPIPE in https://invent.kde.org/qt/qt/qtwayland/-/blob/kde/5.15/src/client/qwaylanddatasource.cpp#L84 (and in KGuiAddons which the first backtrace points to https://invent.kde.org/frameworks/kguiaddons/-/commit/002fd3fb68f975b9ff20d54e0150df5112c5ec62) Theoretically a different thread can change the signal handler during our write, no idea where to start looking or if that even happens.
I've filed https://bugreports.qt.io/browse/QTBUG-110484
Hello, I'm planning to change my PC in the next days and I'll reinstall the whole system. i don't know if the bug will happen again. It seems also less frequent since the last updates. Let me know if it could be useful to keep an image of this system for future testing. I may be able to move the image of this disk to an old HDD for testing purposes
Hello, since I'm not having this bug anymore (5.27) and the QTBUG-110484 is closed, I think we can close this bug report too
Cool, thanks for following up!