Bug 427949 - Wayland session crash/ends as soon as i hover mouse over bottom panel.
Summary: Wayland session crash/ends as soon as i hover mouse over bottom panel.
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: wayland-generic (show other bugs)
Version: git master
Platform: openSUSE Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-10-19 00:53 UTC by Tony
Modified: 2020-10-26 13:58 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In: 5.20.2


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tony 2020-10-19 00:53:19 UTC
SUMMARY

Having updated to the latest packages and logging into a wayland session, as soon as i hovered the mouse over the bottom panel the whole session would end/crash and throw me back to sddm logging screen. 

I try logging in and out, rebooted same result.

Running dmesg i could see this : 

kwin_wayland[12639]: segfault at 10 ip 0000562ae4ec9c9f sp 00007ffff8d10560 error 4 in kwin_wayland[562ae4eac000+24000]
[ 1108.742773] Code: 48 89 c3 48 8d 05 c1 98 ff ff 48 89 43 08 48 89 df c7 43 04 01 00 00 00 c7 03 01 00 00 00 e8 a8 3d fe ff 31 ff e8 41 3f fe ff <48> 8b 50 10 48 89 45 20 48 8b 42 10 48 85 c0 0f 84 5c 04 00 00 48

Checking coredumbctl shows entries for kwin_wayland.

I manged to get this backtrace : 

#0  0x0000562ae4ec9c9f in KWin::PipeWireCore::init (this=0x562ae71cc2e0) at /usr/src/debug/kwin5-5.20.80git.20201016T170339~7eccfdc52-ku.137.1.x86_64/screencast/pipewirecore.cpp:102
#1  KWin::PipeWireCore::self () at /usr/src/debug/kwin5-5.20.80git.20201016T170339~7eccfdc52-ku.137.1.x86_64/screencast/pipewirecore.cpp:102
#2  KWin::PipeWireStream::init (this=0x562ae71ea600) at /usr/src/debug/kwin5-5.20.80git.20201016T170339~7eccfdc52-ku.137.1.x86_64/screencast/pipewirestream.cpp:194
Backtrace stopped: Cannot access memory at address 0x7ffff8d105e8


The only package i had at the time ralated to pipewire on my system was libpipewire-0_3-0. After installing pipewire and its dependecies i don't get the session crash anymore.


STEPS TO REPRODUCE
1. Only have libpipewire-0_3-0 installed in your system.
2. Login into a wayland session.
3. Hover the mouse over the bottom panel.

OBSERVED RESULT
The desktop will freeze for a couple of seconds then you'll be throw back to sddm loggin screen.

EXPECTED RESULT
No session crash or frozen desktop.

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: opensuse Tumbleweed
KDE Plasma Version: 5.20.80
KDE Frameworks Version: 5.76.0
Qt Version: 5.15.1

ADDITIONAL INFORMATION
I am using the unstable kde repositories.
Comment 1 Vlad Zahorodnii 2020-10-20 10:48:49 UTC
Can't reproduce this bug even after corrupting my installation of pipewire.
Comment 2 Tony 2020-10-21 19:48:03 UTC
(In reply to Vlad Zahorodnii from comment #1)
> Can't reproduce this bug even after corrupting my installation of pipewire.

Odd, i can 100% trigger this one, i've tried a new installation on a different system and on a VM, same result.

I also checked other distros (Arh linux and VoidOS) in both pipewire is hard dependency for kwin, which leads me to believe this may be a packaging issue.
Comment 3 Tony 2020-10-22 02:32:52 UTC
I found another way to check this out.

Get a krypton live iso : 
https://en.opensuse.org/SDB:Argon_and_Krypton

I use this one : 
openSUSE_Krypton.x86_64-5.12.80-Build16.490.iso 21-Oct-2020 07:34

Log into a wayland session, open konsole, hover the mouse over konsole icon in the taskmanager, if it does not crashes the session right click over the konsole icon.
Comment 4 Fabian Vogt 2020-10-25 10:51:55 UTC
(In reply to Tony from comment #3)
> I use this one : 
> openSUSE_Krypton.x86_64-5.12.80-Build16.490.iso 21-Oct-2020 07:34

While it was a bug that pipewire wasn't installed on that .iso (fixed now),
kwin should not crash because of that.

Here's a backtrace:

Thread 1 "kwin_wayland" received signal SIGSEGV, Segmentation fault.
0x000055ce29652faf in KWin::PipeWireCore::init (this=0x55ce2b0247a0) at /usr/src/debug/kwin5-5.20.80git.20201023T213716~2ac861152-ku.2.1.x86_64/screencast/pipewirecore.cpp:101
101             ret->init();
(gdb) bt
#0  0x000055ce29652faf in KWin::PipeWireCore::init (this=0x55ce2b0247a0) at /usr/src/debug/kwin5-5.20.80git.20201023T213716~2ac861152-ku.2.1.x86_64/screencast/pipewirecore.cpp:101
#1  KWin::PipeWireCore::self () at /usr/src/debug/kwin5-5.20.80git.20201023T213716~2ac861152-ku.2.1.x86_64/screencast/pipewirecore.cpp:101
#2  KWin::PipeWireStream::init (this=this@entry=0x55ce2b0d68a0) at /usr/src/debug/kwin5-5.20.80git.20201023T213716~2ac861152-ku.2.1.x86_64/screencast/pipewirestream.cpp:195
#3  0x000055ce2965373e in KWin::ScreencastManager::integrateStreams (waylandStream=0x55ce2b0d0800, stream=0x55ce2b0d68a0, this=<optimized out>)
    at /usr/src/debug/kwin5-5.20.80git.20201023T213716~2ac861152-ku.2.1.x86_64/screencast/screencastmanager.cpp:140
#4  0x00007f8558899646 in ?? () from /usr/lib64/libQt5Core.so.5
#5  0x00007f8559ae9835 in KWaylandServer::ScreencastV1Interface::windowScreencastRequested(KWaylandServer::ScreencastStreamV1Interface*, QString const&, KWaylandServer::ScreencastV1Interface::CursorMode) ()
   from /usr/lib64/libKWaylandServer.so.5
#6  0x00007f8559b6e08c in ?? () from /usr/lib64/libKWaylandServer.so.5
#7  0x00007f85558f042d in ?? () from /usr/lib64/libffi.so.8
#8  0x00007f85558ec4f9 in ?? () from /usr/lib64/libffi.so.8
#9  0x00007f8556ca4fd5 in ?? () from /usr/lib64/libwayland-server.so.0
#10 0x00007f8556ca8ebc in ?? () from /usr/lib64/libwayland-server.so.0
#11 0x00007f8556ca7ab2 in wl_event_loop_dispatch () from /usr/lib64/libwayland-server.so.0
#12 0x00007f8559aff33f in KWaylandServer::Display::Private::dispatch() () from /usr/lib64/libKWaylandServer.so.5

It looks like pwMainLoop is nullptr.
Comment 5 Bug Janitor Service 2020-10-26 09:33:38 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/387
Comment 6 Vlad Zahorodnii 2020-10-26 11:43:32 UTC
Git commit 4b12afced9c20a9314a630a3e46b103b204ae58f by Vlad Zahorodnii.
Committed on 26/10/2020 at 11:42.
Pushed by vladz into branch 'master'.

screencast: Handle the case where pipewire is not installed

If pipewire is not installed, pw_loop_new() may return a nullptr.

M  +5    -0    screencast/pipewirecore.cpp

https://invent.kde.org/plasma/kwin/commit/4b12afced9c20a9314a630a3e46b103b204ae58f
Comment 7 Vlad Zahorodnii 2020-10-26 11:44:08 UTC
Git commit 6577a35ec9a5a8f892085aa54c78ffb334001cbd by Vlad Zahorodnii.
Committed on 26/10/2020 at 11:44.
Pushed by vladz into branch 'Plasma/5.20'.

screencast: Handle the case where pipewire is not installed

If pipewire is not installed, pw_loop_new() may return a nullptr.


(cherry picked from commit 4b12afced9c20a9314a630a3e46b103b204ae58f)

M  +5    -0    screencast/pipewirecore.cpp

https://invent.kde.org/plasma/kwin/commit/6577a35ec9a5a8f892085aa54c78ffb334001cbd