https://bugs.kde.org/show_bug.cgi?id=409021

Matt Fagnani <matthew.fagn...@utoronto.ca> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Version|5.15.5                      |5.19.4
            Summary|Segmentation faults of      |Segmentation faults of
                   |plasmashell in              |plasmashell in
                   |wl_proxy_set_queue at       |wl_proxy_set_queue in
                   |wayland-client.c:2094 in    |libwayland-client in Plasma
                   |libwayland-client in Plasma |on Wayland
                   |5.15.5 on Wayland with Qt   |
                   |5.12.4                      |

--- Comment #7 from Matt Fagnani <matthew.fagn...@utoronto.ca> ---
I was using Plasma 5.19.4 on Wayland in Fedora 33 with KF 5.73.0 and Qt 5.14.2.
I set the desktop to use the Application Menu by right-clicking on the button
at the bottom left of the screen, selecting Show Alternatives > Application
Menu > Switch. I quickly left-clicked to open the Application Menu many times.
The Task Manager bar at the bottom of the screen disappeared and reappeared
automatically. plasmashell segmentation faulted in wl_proxy_set_queue at
src/wayland-client.c:2173 in libwayland-client-1.18.0-2.fc33.x86_64.

Core was generated by `/usr/bin/plasmashell'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  __GI_raise (sig=<optimized out>) at ../sysdeps/unix/sysv/linux/raise.c:49
49        return ret;
[Current thread is 1 (Thread 0x7ff5eabe6640 (LWP 8221))]
(gdb) bt
#0  __GI_raise (sig=<optimized out>) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  <signal handler called>
#2  0x00007ff688034ca5 in wl_proxy_set_queue (proxy=0x0, queue=0x55f4dc0e5790)
    at src/wayland-client.c:2173
#3  0x00007ff676c85f8d in QtWaylandClient::QWaylandWindow::waitForFrameSync
(timeout=100, 
    this=0x55f4dc0ae900) at qwaylandwindow.cpp:637
#4  QtWaylandClient::QWaylandWindow::waitForFrameSync
(this=this@entry=0x55f4dc0ae900, 
    timeout=timeout@entry=100) at qwaylandwindow.cpp:630
#5  0x00007ff6740181ea in QtWaylandClient::QWaylandGLContext::swapBuffers
(this=0x55f4dcaacb10, 
    surface=0x55f4dc0ae910)
    at
../../../../hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp:482
#6  0x00007ff68a00d0c4 in QSGRenderThread::syncAndRender (this=0x55f4dc923380,
grabImage=0x0)
    at scenegraph/qsgthreadedrenderloop.cpp:841
#7  0x00007ff68a013e0f in QSGRenderThread::run (this=0x55f4dc923380)
    at scenegraph/qsgthreadedrenderloop.cpp:980
#8  0x00007ff68857b690 in QThreadPrivate::start (arg=0x55f4dc923380) at
thread/qthread_unix.cpp:342
#9  0x00007ff6879df3f9 in start_thread (arg=0x7ff5eabe6640) at
pthread_create.c:463
#10 0x00007ff6881ffb03 in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:95

The pointer proxy=0x0 passed to wl_proxy_set_queue might've led to a null
pointer dereference like in the crash I reported here before.

(gdb) l src/wayland-client.c:2173
2168     * \memberof wl_proxy
2169     */
2170    WL_EXPORT void
2171    wl_proxy_set_queue(struct wl_proxy *proxy, struct wl_event_queue
*queue)
2172    {
2173            if (queue)
2174                    proxy->queue = queue;
2175            else
2176                    proxy->queue = &proxy->display->default_queue;
2177    }


The crashes might involve a race condition in which the Wayland proxy of the
Application menu was occasionally freed or corrupted before it was used.
The use-after-free errors I reported in comment 1 might still be happening and
leading to the crashes. plasmashell crashed when I've quickly left-clicked to
open the Application Menu many times in the last day with errors like The
Wayland connection experienced a fatal error: Invalid argument
https://bugs.kde.org/show_bug.cgi?id=424879 and a segmentation fault in
update_buffers in mesa-libEGL https://bugs.kde.org/show_bug.cgi?id=414411 Those
crashes might have been related to this one.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to