wlroots: SIGSEGV when special input happened in some games in embedded mode
Checked Games with This Bug:
- What Remains of Edith Finch (Game Menu)
- Red Dead Redemption 2 (Weapon Menu)
- Hogwarts Legacy (Main Menu)
- and more
Behavior:
- Crash and left with black screen and blinking cursor.
Trace Back:
#0 0x00005abd81ade906 in wlr_render_timeline_wait (flags=4, func=0x5abd81ade7f0 <surface_commit_handle_fence_available(void*)>, timeline=0x0, point=0, loop=0x5abd89961b80, data=0x5abd89ded7e0)
at ../gamescope/subprojects/wlroots/render/timeline.c:191
#1 surface_handle_client_commit (listener=0x5abd89ded7b8, data=<optimized out>) at ../gamescope/subprojects/wlroots/types/wlr_linux_drm_syncobj_v1.c:254
#2 0x00007683efd6242e in wl_signal_emit_mutable (signal=<optimized out>, data=0x0) at ../wayland-1.23.0/src/wayland-server.c:2314
#3 0x00005abd81ade399 in surface_handle_commit (client=<optimized out>, resource=<optimized out>) at ../gamescope/subprojects/wlroots/types/wlr_compositor.c:581
#4 0x00007683ef752596 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#5 0x00007683ef74f00e in ffi_call_int (cif=cif@entry=0x7ffe3bd3a110, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
#6 0x00007683ef751bd3 in ffi_call (cif=cif@entry=0x7ffe3bd3a110, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7ffe3bd3a1e0) at ../src/x86/ffi64.c:710
#7 0x00007683efd60e45 in wl_closure_invoke (closure=closure@entry=0x5abd89df0300, target=<optimized out>, target@entry=0x5abd89d77960, opcode=opcode@entry=6, data=<optimized out>,
data@entry=0x5abd89d66950, flags=2) at ../wayland-1.23.0/src/connection.c:1228
#8 0x00007683efd65c42 in wl_client_connection_data (fd=<optimized out>, mask=<optimized out>, data=0x5abd89d66950) at ../wayland-1.23.0/src/wayland-server.c:444
#9 0x00007683efd640a2 in wl_event_loop_dispatch (loop=0x5abd89961b80, timeout=<optimized out>) at ../wayland-1.23.0/src/event-loop.c:1105
#10 0x00005abd819d911f in wlserver_run () at ../gamescope/src/wlserver.cpp:1939
#11 main (argc=<optimized out>, argv=0x7ffe3bd3a938) at ../gamescope/src/main.cpp:1076
Stack 0:
187 struct wl_event_source *wlr_render_timeline_wait(struct wlr_render_timeline *timeline,
188 uint64_t point, uint32_t flags, struct wl_event_loop *loop,
189 wlr_render_timeline_wait_func_t func, void *data) {
190 uint32_t signaled_point
> 191 int ret = drmSyncobjTimelineWait(timeline->drm_fd, &timeline->handle, &point, 1, 0, flags, &signaled_point);
192 if (ret == 0) {
193 func(data);
194 return NULL;
195 } else if (ret != -ETIME) {
196 wlr_log_errno(WLR_ERROR, "drmSyncobjWait() failed");
197 return NULL;
198 }
Null pointer timeline:
(gdb) print timeline
$1 = (wlr_render_timeline *) 0x0
Stack 1:
194 static void surface_handle_client_commit(struct wl_listener *listener,
195 void *data) {
196 struct wlr_linux_drm_syncobj_surface_v1 *surface =
197 wl_container_of(listener, surface, client_commit);
...
> 254 wlr_render_timeline_wait(surface->pending.acquire_timeline, surface->pending.acquire_point,
255 DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE, loop,
256 surface_commit_handle_fence_available, commit);
257 }
Empty child pending of surface:
(gdb) print * surface
$3 = {resource = 0x5abd89d7a300, surface = 0x5abd89def2d0, pending = {acquire_timeline = 0x0, acquire_point = 0, release_timeline = 0x0, release_point = 0}, current = {acquire_timeline = 0x5abd89d2fa40, acquire_point = 1413, release_timeline = 0x5abd89d2d5f0, release_point = 1413}, addon = {impl = 0x5abd81bfbd90 <surface_addon_impl.lto_priv>, owner = 0x5abd89b63400, link = {prev = 0x5abd89def608, next = 0x5abd89d64ba0}}, synced = {surface = 0x5abd89def2d0, impl = 0x5abd81bfbda0 <surface_synced_impl.lto_priv>, link = {prev = 0x5abd89def660, next = 0x5abd89df0690}, index = 1}, client_commit = { link = {prev = 0x5abd89def598, next = 0x7ffe3bd39eb0}, notify = 0x5abd81ade820 <surface_handle_client_commit(wl_listener*, void*)>}}
I have very similar problem.
gamescope embedded mode AMD RNDA2/3(680m and 7600) MESA 24.1 and later(now 24.1.1)
On a little bit older version of gamescope(about 3.14.17). Games do start normally, but most of them will crash(gamescope crash) when you click "start game". On the latest git version of gamescope, gamescope will crash immediately when you move the mouse pointer. But if you use controller only, it won't crash and you can play games normally.
Here ia a crash log:
Stack trace of thread 22490:
#0 0x00006389f2ff3ed6 n/a (gamescope + 0x12ded6)
#1 0x000076024223c42e wl_signal_emit_mutable (libwayland-server.so.0 + 0x842e)
#2 0x00006389f2ff3969 n/a (gamescope + 0x12d969)
#3 0x0000760241d26596 n/a (libffi.so.8 + 0x7596)
#4 0x0000760241d2300e n/a (libffi.so.8 + 0x400e)
#5 0x0000760241d25bd3 ffi_call (libffi.so.8 + 0x6bd3)
#6 0x000076024223ae45 n/a (libwayland-server.so.0 + 0x6e45)
#7 0x000076024223fc42 n/a (libwayland-server.so.0 + 0xbc42)
#8 0x000076024223e0a2 wl_event_loop_dispatch (libwayland-server.so.0 + 0xa0a2)
#9 0x00006389f2eec3c0 n/a (gamescope + 0x263c0)
#10 0x000076024174ec88 n/a (libc.so.6 + 0x25c88)
#11 0x000076024174ed4c __libc_start_main (libc.so.6 + 0x25d4c)
#12 0x00006389f2f016f5 n/a (gamescope + 0x3b6f5)
Stack trace of thread 22494:
#0 0x000076024183f4e2 epoll_wait (libc.so.6 + 0x1164e2)
#1 0x00006389f301a336 n/a (gamescope + 0x154336)
#2 0x00006389f2f2f25c n/a (gamescope + 0x6925c)
#3 0x0000760241ae0c84 execute_native_thread_routine (libstdc++.so.6 + 0xe0c84)
#4 0x00007602417bbded n/a (libc.so.6 + 0x92ded)
#5 0x000076024183f0dc n/a (libc.so.6 + 0x1160dc)
Stack trace of thread 22588:
#0 0x000076024183a9ed ioctl (libc.so.6 + 0x1119ed)
#1 0x000076024224f4c1 drmIoctl (libdrm.so.2 + 0x74c1)
#2 0x0000760242253f7b drmSyncobjTimelineWait (libdrm.so.2 + 0xbf7b)
#3 0x0000760235de31bb n/a (libvulkan_radeon.so + 0x1e31bb)
#4 0x0000760235ddada5 n/a (libvulkan_radeon.so + 0x1dada5)
#5 0x0000760235dda91c n/a (libvulkan_radeon.so + 0x1da91c)
#6 0x00006389f2f3ca4e n/a (gamescope + 0x76a4e)
#7 0x00006389f2f624aa n/a (gamescope + 0x9c4aa)
#8 0x00006389f2f18598 n/a (gamescope + 0x52598)
#9 0x00006389f2f2c0d8 n/a (gamescope + 0x660d8)
#10 0x00006389f2f2e360 n/a (gamescope + 0x68360)
#11 0x0000760241ae0c84 execute_native_thread_routine (libstdc++.so.6 + 0xe0c84)
#12 0x00007602417bbded n/a (libc.so.6 + 0x92ded)
#13 0x000076024183f0dc n/a (libc.so.6 + 0x1160dc)
Stack trace of thread 22493:
#0 0x000076024183f4e2 epoll_wait (libc.so.6 + 0x1164e2)
#1 0x00006389f301a336 n/a (gamescope + 0x154336)
#2 0x00006389f2f36278 n/a (gamescope + 0x70278)
#3 0x0000760241ae0c84 execute_native_thread_routine (libstdc++.so.6 + 0xe0c84)
#4 0x00007602417bbded n/a (libc.so.6 + 0x92ded)
#5 0x000076024183f0dc n/a (libc.so.6 + 0x1160dc)
Stack trace of thread 22589:
#0 0x00007602418310b5 __open64 (libc.so.6 + 0x1080b5)
#1 0x00006389f2f0d947 n/a (gamescope + 0x47947)
#2 0x0000760241ae0c84 execute_native_thread_routine (libstdc++.so.6 + 0xe0c84)
#3 0x00007602417bbded n/a (libc.so.6 + 0x92ded)
#4 0x000076024183f0dc n/a (libc.so.6 + 0x1160dc)
Stack trace of thread 22498:
#0 0x0000760241807f43 clock_nanosleep (libc.so.6 + 0xdef43)
#1 0x0000760241813d77 __nanosleep (libc.so.6 + 0xead77)
#2 0x0000760235d16b72 n/a (libvulkan_radeon.so + 0x116b72)
#3 0x0000760235e93b9d n/a (libvulkan_radeon.so + 0x293b9d)
#4 0x00007602417bbded n/a (libc.so.6 + 0x92ded)
#5 0x000076024183f0dc n/a (libc.so.6 + 0x1160dc)
Stack trace of thread 22529:
#0 0x000076024183139d __poll (libc.so.6 + 0x10839d)
#1 0x00006389f2f59189 n/a (gamescope + 0x93189)
#2 0x0000760241ae0c84 execute_native_thread_routine (libstdc++.so.6 + 0xe0c84)
#3 0x00007602417bbded n/a (libc.so.6 + 0x92ded)
#4 0x000076024183f0dc n/a (libc.so.6 + 0x1160dc)
Stack trace of thread 22585:
#0 0x000076024183f4e2 epoll_wait (libc.so.6 + 0x1164e2)
#1 0x000076023703a197 n/a (libspa-support.so + 0x15197)
#2 0x000076023702ba21 n/a (libspa-support.so + 0x6a21)
#3 0x0000760241e21103 n/a (libpipewire-0.3.so.0 + 0x1c103)
#4 0x00007602417bbded n/a (libc.so.6 + 0x92ded)
#5 0x000076024183f0dc n/a (libc.so.6 + 0x1160dc)
Stack trace of thread 22497:
#0 0x00007602417b84e9 n/a (libc.so.6 + 0x8f4e9)
#1 0x00007602417baed9 pthread_cond_wait (libc.so.6 + 0x91ed9)
#2 0x0000760235e93c6e n/a (libvulkan_radeon.so + 0x293c6e)
#3 0x0000760235e6cc1c n/a (libvulkan_radeon.so + 0x26cc1c)
#4 0x0000760235e93b9d n/a (libvulkan_radeon.so + 0x293b9d)
#5 0x00007602417bbded n/a (libc.so.6 + 0x92ded)
#6 0x000076024183f0dc n/a (libc.so.6 + 0x1160dc)
Stack trace of thread 22587:
#0 0x000076024183139d __poll (libc.so.6 + 0x10839d)
#1 0x00006389f2f6bed3 n/a (gamescope + 0xa5ed3)
#2 0x0000760241ae0c84 execute_native_thread_routine (libstdc++.so.6 + 0xe0c84)
#3 0x00007602417bbded n/a (libc.so.6 + 0x92ded)
#4 0x000076024183f0dc n/a (libc.so.6 + 0x1160dc)
Stack trace of thread 22510:
#0 0x00007602417b84e9 n/a (libc.so.6 + 0x8f4e9)
#1 0x00007602417baed9 pthread_cond_wait (libc.so.6 + 0x91ed9)
#2 0x0000760235e93c6e n/a (libvulkan_radeon.so + 0x293c6e)
#3 0x0000760235e6cc1c n/a (libvulkan_radeon.so + 0x26cc1c)
#4 0x0000760235e93b9d n/a (libvulkan_radeon.so + 0x293b9d)
#5 0x00007602417bbded n/a (libc.so.6 + 0x92ded)
#6 0x000076024183f0dc n/a (libc.so.6 + 0x1160dc)
Stack trace of thread 22513:
#0 0x00007602417b84e9 n/a (libc.so.6 + 0x8f4e9)
#1 0x00007602417baed9 pthread_cond_wait (libc.so.6 + 0x91ed9)
#2 0x0000760235e93c6e n/a (libvulkan_radeon.so + 0x293c6e)
#3 0x0000760235e6cc1c n/a (libvulkan_radeon.so + 0x26cc1c)
#4 0x0000760235e93b9d n/a (libvulkan_radeon.so + 0x293b9d)
#5 0x00007602417bbded n/a (libc.so.6 + 0x92ded)
#6 0x000076024183f0dc n/a (libc.so.6 + 0x1160dc)
Stack trace of thread 22518:
#0 0x00007602417b84e9 n/a (libc.so.6 + 0x8f4e9)
#1 0x00007602417baed9 pthread_cond_wait (libc.so.6 + 0x91ed9)
#2 0x0000760235e93c6e n/a (libvulkan_radeon.so + 0x293c6e)
#3 0x0000760235e6cc1c n/a (libvulkan_radeon.so + 0x26cc1c)
#4 0x0000760235e93b9d n/a (libvulkan_radeon.so + 0x293b9d)
#5 0x00007602417bbded n/a (libc.so.6 + 0x92ded)
#6 0x000076024183f0dc n/a (libc.so.6 + 0x1160dc)
ELF object binary architecture: AMD x86-64
@emersion Any idea why this code is being called? We don't want to use it, right? We already handle this ourselves.
This is already fixed in the latest iteration of the wlroots MR I believe, but gamescope seems to use an earlier version.
Any idea why this code is being called? We don't want to use it, right? We already handle this ourselves.
Yeah. It doesn't matter at the moment since clients send already-materialized fences but we should fix it.
Any suggestion for a workaround for now?
Any suggestion for a workaround for now?
Rolling back to 3.14.2, or other version using old wlroots.
3.14.2 segfaults too but differently #1202
wlroots has merged the linux-drm-syncobj-v1 implementation, would be nice to upgrade gamescope to use that instead of the old WIP patches.
I encountered a similar but slightly different sigsegv w/ latest gamescope when running qemu gtk w/ zink on and gamescope WSI disabled, currently working on debugging it w/ valgrind:
Process terminating with default action of signal 11 (SIGSEGV): dumping core
==00:00:14:34.338 476165== Access not within mapped region at address 0x0
==00:00:14:34.338 476165== at 0x2340BE: surface_handle_client_commit (in /usr/bin/gamescope)
==00:00:14:34.338 476165== by 0x4A4E01D: wl_signal_emit_mutable (in /usr/lib/libwayland-server.so.0.22.0)
==00:00:14:34.338 476165== by 0x2346E1: surface_handle_commit (in /usr/bin/gamescope)
==00:00:14:34.338 476165== by 0x55BD595: ffi_call_unix64 (unix64.S:104)
==00:00:14:34.338 476165== by 0x55BA00D: ffi_call_int.lto_priv.0 (ffi64.c:673)
==00:00:14:34.338 476165== by 0x55BCBD2: ffi_call (ffi64.c:710)
==00:00:14:34.338 476165== by 0x4A4CAD9: ??? (in /usr/lib/libwayland-server.so.0.22.0)
==00:00:14:34.338 476165== by 0x4A5117F: ??? (in /usr/lib/libwayland-server.so.0.22.0)
==00:00:14:34.338 476165== by 0x4A4FAE1: wl_event_loop_dispatch (in /usr/lib/libwayland-server.so.0.22.0)
==00:00:14:34.338 476165== by 0x13EA17: main (in /usr/bin/gamescope)
EDIT: in another run (same exact arguments and whatnot) I got the exact same backtrace as the one found by others in this issue post
==00:00:25:15.180 520291== Invalid read of size 4
==00:00:25:15.180 520291== at 0x25B89C: wlr_render_timeline_wait (timeline.c:191)
==00:00:25:15.180 520291== by 0x4A4E01D: wl_signal_emit_mutable (in /usr/lib/libwayland-server.so.0.22.0)
==00:00:25:15.180 520291== by 0x2761C1: surface_handle_commit (wlr_compositor.c:581)
==00:00:25:15.180 520291== by 0x54C5595: ffi_call_unix64 (unix64.S:104)
==00:00:25:15.180 520291== by 0x54C200D: ffi_call_int.lto_priv.0 (ffi64.c:673)
==00:00:25:15.180 520291== by 0x54C4BD2: ffi_call (ffi64.c:710)
==00:00:25:15.180 520291== by 0x4A4CAD9: ??? (in /usr/lib/libwayland-server.so.0.22.0)
==00:00:25:15.180 520291== by 0x4A5117F: ??? (in /usr/lib/libwayland-server.so.0.22.0)
==00:00:25:15.180 520291== by 0x4A4FAE1: wl_event_loop_dispatch (in /usr/lib/libwayland-server.so.0.22.0)
==00:00:25:15.180 520291== by 0x1A3CD8: wlserver_run() (wlserver.cpp:1943)
==00:00:25:15.180 520291== by 0x13F1EE: main (main.cpp:1047)
==00:00:25:15.180 520291== Address 0x0 is not stack'd, malloc'd or (recently) free'd
will debug this soon
@emersion When you said
This is already fixed in the latest iteration of the wlroots MR I believe, but gamescope seems to use an earlier version
Was this issue fixed as of commit: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/90/diffs?commit_id=ae9ed7ac14e02021bc9f200aff19ff1601a1ae61
Or was it a commit after that one?
2nd UPDATE: I tried to recompile gamescope w/ the latest upstream gitlab version of wayland-protocols, but still encountered the same issue does the wlroots version used by gamescope need to be updated as well?
3rd UPDATE: so I decided to try to update the version of wlroots being used w/ gamescope to the latest version... it broke some stuff, but somehow I've managed to fix the incompatibilities w/ the newer wlroots version... (at least to where I can successfully run glxgears)
I'll have to see if this issue I encountered when running qemu gtk + zink ontop of gamescope still occurs w/ latest wlroots, but later, because it was a bit of an pain to try to migrate over to the newer wlroots...
This still happens for me after the wlroots upgrade:
matt@threadripper-pc:~$ coredumpctl debug 3574
PID: 3574 (gamescope-wl)
UID: 1000 (matt)
GID: 1001 (matt)
Signal: 11 (SEGV)
Timestamp: Wed 2024-07-31 12:42:51 PDT (9min ago)
Command Line: /usr/bin/gamescope --prefer-output $'*,eDP-1' --xwayland-count 2 --default-touch-mode 4 --hide-cursor-delay 3000 --fade-out-duration 200 --steam -R /run/user/1000/gamescope.2XjGlzb/startup.socket -T /run/user/1000/gamescope.2XjGlzb/stats.pipe
Executable: /usr/bin/gamescope
Control Group: /user.slice/user-1000.slice/[email protected]/app.slice/app-gamescope\x2dsession\x2dplus.slice/[email protected]
Unit: [email protected]
User Unit: [email protected]
Slice: user-1000.slice
Owner UID: 1000 (matt)
Boot ID: c48bd328aac64fe2b3177484b56f898c
Machine ID: 651b74920beb4813b3d9f7377a69ea4f
Hostname: threadripper-pc
Storage: /var/lib/systemd/coredump/core.gamescope-wl.1000.c48bd328aac64fe2b3177484b56f898c.3574.1722454971000000.zst (present)
Size on Disk: 2.5M
Message: Process 3574 (gamescope-wl) of user 1000 dumped core.
Module libpipewire-module-session-manager.so from rpm pipewire-1.2.0-3.fc40.x86_64
Module libpipewire-module-metadata.so from rpm pipewire-1.2.0-3.fc40.x86_64
Module libpipewire-module-adapter.so from rpm pipewire-1.2.0-3.fc40.x86_64
Module libpipewire-module-client-device.so from rpm pipewire-1.2.0-3.fc40.x86_64
Module libpipewire-module-client-node.so from rpm pipewire-1.2.0-3.fc40.x86_64
Module libselinux.so.1 from rpm libselinux-3.6-4.fc40.x86_64
Module libpipewire-module-protocol-native.so from rpm pipewire-1.2.0-3.fc40.x86_64
Module libdbus-1.so.3 from rpm dbus-1.14.10-3.fc40.x86_64
Module libspa-dbus.so from rpm pipewire-1.2.0-3.fc40.x86_64
Module libspa-journal.so from rpm pipewire-1.2.0-3.fc40.x86_64
Module libspa-support.so from rpm pipewire-1.2.0-3.fc40.x86_64
Module libVkLayer_MESA_device_select.so from rpm mesa-vulkan-drivers-24.2.0-git.20240724.fd83fc4.fc40.x86_64
Module libelf.so.1 from rpm elfutils-0.191-4.fc40.x86_64
Module libdrm_amdgpu.so.1 from rpm libdrm-2.4.122-1.fc40.x86_64
Module libvulkan_radeon.so from rpm mesa-vulkan-drivers-24.2.0-git.20240724.fd83fc4.fc40.x86_64
Module libxml2.so.2 from rpm libxml2-2.12.8-1.fc40.x86_64
Module libtinfo.so.6 from rpm ncurses-6.4-12.20240127.fc40.x86_64
Module libedit.so.0 from rpm libedit-3.1-51.20240517cvs.fc40.x86_64
Module libvulkan_lvp.so from rpm mesa-vulkan-drivers-24.2.0-git.20240724.fd83fc4.fc40.x86_64
Module libvulkan_intel.so from rpm mesa-vulkan-drivers-24.2.0-git.20240724.fd83fc4.fc40.x86_64
Module libvulkan_intel_hasvk.so from rpm mesa-vulkan-drivers-24.2.0-git.20240724.fd83fc4.fc40.x86_64
Module libexpat.so.1 from rpm expat-2.6.2-1.fc40.x86_64
Module libxshmfence.so.1 from rpm libxshmfence-1.3.2-3.fc40.x86_64
Module libxcb-shm.so.0 from rpm libxcb-1.17.0-1.fc40.x86_64
Module libxcb-randr.so.0 from rpm libxcb-1.17.0-1.fc40.x86_64
Module libxcb-sync.so.1 from rpm libxcb-1.17.0-1.fc40.x86_64
Module libxcb-xfixes.so.0 from rpm libxcb-1.17.0-1.fc40.x86_64
Module libxcb-present.so.0 from rpm libxcb-1.17.0-1.fc40.x86_64
Module libxcb-dri3.so.0 from rpm libxcb-1.17.0-1.fc40.x86_64
Module libX11-xcb.so.1 from rpm libX11-1.8.9-1.fc40.x86_64
Module libz.so.1 from rpm zlib-ng-2.1.7-1.fc40.x86_64
Module libvulkan_nouveau.so from rpm mesa-vulkan-drivers-24.2.0-git.20240724.fd83fc4.fc40.x86_64
Module libvulkan.so.1 from rpm vulkan-loader-1.3.280-1.fc40.x86_64
Module libbrotlicommon.so.1 from rpm brotli-1.1.0-3.fc40.x86_64
Module libbrotlienc.so.1 from rpm brotli-1.1.0-3.fc40.x86_64
Module libbrotlidec.so.1 from rpm brotli-1.1.0-3.fc40.x86_64
Module libuuid.so.1 from rpm util-linux-2.40.1-1.fc40.x86_64
Module libpcre2-8.so.0 from rpm pcre2-10.44-1.fc40.x86_64
Module libvmaf.so.1 from rpm vmaf-2.3.0-7.fc40.x86_64
Module libjxl.so.0.8 from rpm jpegxl-0.8.2-6.fc40.x86_64
Module libSM.so.6 from rpm libSM-1.2.4-3.fc40.x86_64
Module libICE.so.6 from rpm libICE-1.1.1-3.fc40.x86_64
Module libglib-2.0.so.0 from rpm glib2-2.80.3-1.fc40.x86_64
Module libgobject-2.0.so.0 from rpm glib2-2.80.3-1.fc40.x86_64
Module libgudev-1.0.so.0 from rpm libgudev-238-5.fc40.x86_64
Module libzstd.so.1 from rpm zstd-1.5.6-1.fc40.x86_64
Module liblzma.so.5 from rpm xz-5.4.6-3.fc40.x86_64
Module liblz4.so.1 from rpm lz4-1.9.4-6.fc40.x86_64
Module libXau.so.6 from rpm libXau-1.0.11-6.fc40.x86_64
Module libsharpyuv.so.0 from rpm libwebp-1.3.2-5.fc40.x86_64
Module libaom.so.3 from rpm aom-3.9.0-1.fc40.x86_64
Module libSvtAv1Enc.so.2 from rpm svt-av1-2.1.0-1.fc40.x86_64
Module librav1e.so.0 from rpm rust-rav1e-0.7.1-2.fc40.x86_64
Module libdav1d.so.7 from rpm dav1d-1.4.3-1.fc40.x86_64
Module libXt.so.6 from rpm libXt-1.3.0-3.fc40.x86_64
Module libwacom.so.9 from rpm libwacom-2.11.0-1.fc40.x86_64
Module libevdev.so.2 from rpm libevdev-1.13.2-2.fc40.x86_64
Module libmtdev.so.1 from rpm mtdev-1.1.6-8.fc40.x86_64
Module libsystemd.so.0 from rpm systemd-255.8-1.fc40.x86_64
Module libxcb.so.1 from rpm libxcb-1.17.0-1.fc40.x86_64
Module libffi.so.8 from rpm libffi-3.4.4-7.fc40.x86_64
Module libeis.so.1 from rpm libei-1.2.1-1.fc40.x86_64
Module libdecor-0.so.0 from rpm libdecor-0.2.2-3.fc40.x86_64
Module libXi.so.6 from rpm libXi-1.8.1-5.fc40.x86_64
Module libavif.so.16 from rpm libavif-1.0.4-3.fc40.x86_64
Module libXcursor.so.1 from rpm libXcursor-1.2.1-7.fc40.x86_64
Module libdisplay-info.so.1 from rpm libdisplay-info-0.1.1-4.fc40.x86_64
Module libpipewire-0.3.so.0 from rpm pipewire-1.2.0-3.fc40.x86_64
Module libcap.so.2 from rpm libcap-2.69-8.fc40.x86_64
Module libXmu.so.6 from rpm libXmu-1.2.1-1.fc40.x86_64
Module libXtst.so.6 from rpm libXtst-1.2.4-6.fc40.x86_64
Module libinput.so.10 from rpm libinput-1.26.1-1.fc40.x86_64
Module libseat.so.1 from rpm seatd-0.8.0-2.fc40.x86_64
Module libudev.so.1 from rpm systemd-255.8-1.fc40.x86_64
Module libpixman-1.so.0 from rpm pixman-0.43.4-1.fc40.x86_64
Module libSDL2-2.0.so.0 from rpm SDL2-2.30.3-1.fc40.x86_64
Module libxkbcommon.so.0 from rpm libxkbcommon-1.6.0-2.fc40.x86_64
Module libwayland-server.so.0 from rpm wayland-1.23.0-2.fc40.x86_64
Module libdrm.so.2 from rpm libdrm-2.4.122-1.fc40.x86_64
Module libXRes.so.1 from rpm libXres-1.2.2-3.fc40.x86_64
Module libXxf86vm.so.1 from rpm libXxf86vm-1.1.5-6.fc40.x86_64
Module libXext.so.6 from rpm libXext-1.3.6-1.fc40.x86_64
Module libXrender.so.1 from rpm libXrender-0.9.11-6.fc40.x86_64
Module libXcomposite.so.1 from rpm libXcomposite-0.4.6-3.fc40.x86_64
Module libXfixes.so.3 from rpm libXfixes-6.0.1-3.fc40.x86_64
Module libXdamage.so.1 from rpm libXdamage-1.1.6-3.fc40.x86_64
Module libX11.so.6 from rpm libX11-1.8.9-1.fc40.x86_64
Module libwayland-client.so.0 from rpm wayland-1.23.0-2.fc40.x86_64
Stack trace of thread 3574:
#0 0x00000000004b4d40 TimelinePointToEventFd (gamescope + 0xb4d40)
#1 0x00000000004b5067 _Z13PrepareCommitP11wlr_surfaceP10wlr_buffer (gamescope + 0xb5067)
#2 0x00000000004b5295 _ZN27gamescope_xwayland_server_t14wayland_commitEP11wlr_surfaceP10wlr_buffer (gamescope + 0xb5295)
#3 0x00000000004b558e _Z23xwayland_surface_commitP11wlr_surface (gamescope + 0xb558e)
#4 0x00000000004b5fde handle_wl_surface_commit (gamescope + 0xb5fde)
#5 0x00007f3e0f9be06c wl_signal_emit_mutable (libwayland-server.so.0 + 0x806c)
#6 0x000000000062103f surface_commit_state (gamescope + 0x22103f)
#7 0x0000000000621173 surface_handle_commit (gamescope + 0x221173)
#8 0x00007f3e0f490056 ffi_call_unix64 (libffi.so.8 + 0x9056)
#9 0x00007f3e0f48c6a0 ffi_call_int.lto_priv.0 (libffi.so.8 + 0x56a0)
#10 0x00007f3e0f48f4ee ffi_call (libffi.so.8 + 0x84ee)
#11 0x00007f3e0f9bcb23 wl_closure_invoke.constprop.0 (libwayland-server.so.0 + 0x6b23)
#12 0x00007f3e0f9c1832 wl_client_connection_data (libwayland-server.so.0 + 0xb832)
#13 0x00007f3e0f9bfc92 wl_event_loop_dispatch (libwayland-server.so.0 + 0x9c92)
#14 0x00000000004b9679 _Z12wlserver_runv (gamescope + 0xb9679)
#15 0x00000000004b2228 main (gamescope + 0xb2228)
#16 0x00007f3e0ef55088 __libc_start_call_main (libc.so.6 + 0x2a088)
#17 0x00007f3e0ef5514b __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x2a14b)
#18 0x000000000041a665 _start (gamescope + 0x1a665)
Stack trace of thread 3576:
#0 0x00007f3e0f046832 epoll_wait (libc.so.6 + 0x11b832)
#1 0x000000000048c115 _ZN9gamescope7CWaiterILm1024EE10PollEventsEi (gamescope + 0x8c115)
#2 0x00000000004c332e _ZN9gamescope12CAsyncWaiterINS_11CRawPointerINS_9IWaitableEEELm1024EE16WaiterThreadFuncEPKc (gamescope + 0xc332e)
#3 0x00000000004bf708 _ZZN9gamescope12CAsyncWaiterINS_11CRawPointerINS_9IWaitableEEELm1024EEC4EPKcENKUlvE_clEv (gamescope + 0xbf708)
#4 0x00000000004cd9cf _ZSt13__invoke_implIvZN9gamescope12CAsyncWaiterINS0_11CRawPointerINS0_9IWaitableEEELm1024EEC4EPKcEUlvE_JEET_St14__invoke_otherOT0_DpOT1_ (gamescope + 0xcd9cf)
#5 0x00000000004cd958 _ZSt8__invokeIZN9gamescope12CAsyncWaiterINS0_11CRawPointerINS0_9IWaitableEEELm1024EEC4EPKcEUlvE_JEENSt15__invoke_resultIT_JDpT0_EE4typeEOSA_DpOSB_ (gamescope + 0xcd958)
#6 0x00000000004cd8ea _ZNSt6thread8_InvokerISt5tupleIJZN9gamescope12CAsyncWaiterINS2_11CRawPointerINS2_9IWaitableEEELm1024EEC4EPKcEUlvE_EEE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE (gamescope + 0xcd8ea)
#7 0x00000000004cd848 _ZNSt6thread8_InvokerISt5tupleIJZN9gamescope12CAsyncWaiterINS2_11CRawPointerINS2_9IWaitableEEELm1024EEC4EPKcEUlvE_EEEclEv (gamescope + 0xcd848)
#8 0x00000000004cd6be _ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJZN9gamescope12CAsyncWaiterINS3_11CRawPointerINS3_9IWaitableEEELm1024EEC4EPKcEUlvE_EEEEE6_M_runEv (gamescope + 0xcd6be)
#9 0x00007f3e0f2e7564 execute_native_thread_routine (libstdc++.so.6 + 0xe7564)
#10 0x00007f3e0efc2507 start_thread (libc.so.6 + 0x97507)
#11 0x00007f3e0f04640c __clone3 (libc.so.6 + 0x11b40c)
Stack trace of thread 3575:
#0 0x00007f3e0f046832 epoll_wait (libc.so.6 + 0x11b832)
#1 0x000000000048c115 _ZN9gamescope7CWaiterILm1024EE10PollEventsEi (gamescope + 0x8c115)
#2 0x000000000048d6e0 _ZN9gamescope12CAsyncWaiterINS_2RcI8commit_tLb1EEELm1024EE16WaiterThreadFuncEPKc (gamescope + 0x8d6e0)
#3 0x00000000004887a0 _ZZN9gamescope12CAsyncWaiterINS_2RcI8commit_tLb1EEELm1024EEC4EPKcENKUlvE_clEv (gamescope + 0x887a0)
#4 0x00000000004a315b _ZSt13__invoke_implIvZN9gamescope12CAsyncWaiterINS0_2RcI8commit_tLb1EEELm1024EEC4EPKcEUlvE_JEET_St14__invoke_otherOT0_DpOT1_ (gamescope + 0xa315b)
#5 0x00000000004a3092 _ZSt8__invokeIZN9gamescope12CAsyncWaiterINS0_2RcI8commit_tLb1EEELm1024EEC4EPKcEUlvE_JEENSt15__invoke_resultIT_JDpT0_EE4typeEOSA_DpOSB_ (gamescope + 0xa3092)
#6 0x00000000004a2f9a _ZNSt6thread8_InvokerISt5tupleIJZN9gamescope12CAsyncWaiterINS2_2RcI8commit_tLb1EEELm1024EEC4EPKcEUlvE_EEE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE (gamescope + 0xa2f9a)
#7 0x00000000004a2f02 _ZNSt6thread8_InvokerISt5tupleIJZN9gamescope12CAsyncWaiterINS2_2RcI8commit_tLb1EEELm1024EEC4EPKcEUlvE_EEEclEv (gamescope + 0xa2f02)
#8 0x00000000004a2dc8 _ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJZN9gamescope12CAsyncWaiterINS3_2RcI8commit_tLb1EEELm1024EEC4EPKcEUlvE_EEEEE6_M_runEv (gamescope + 0xa2dc8)
#9 0x00007f3e0f2e7564 execute_native_thread_routine (libstdc++.so.6 + 0xe7564)
#10 0x00007f3e0efc2507 start_thread (libc.so.6 + 0x97507)
#11 0x00007f3e0f04640c __clone3 (libc.so.6 + 0x11b40c)
Stack trace of thread 3585:
#0 0x00007f3e0efbebe9 __futex_abstimed_wait_common (libc.so.6 + 0x93be9)
#1 0x00007f3e0efc1639 pthread_cond_wait@@GLIBC_2.3.2 (libc.so.6 + 0x96639)
#2 0x00007f3e0064053d cnd_wait (libvulkan_radeon.so + 0x24053d)
#3 0x00007f3e00618a6b util_queue_thread_func (libvulkan_radeon.so + 0x218a6b)
#4 0x00007f3e0064049c impl_thrd_routine (libvulkan_radeon.so + 0x24049c)
#5 0x00007f3e0efc2507 start_thread (libc.so.6 + 0x97507)
#6 0x00007f3e0f04640c __clone3 (libc.so.6 + 0x11b40c)
Stack trace of thread 3597:
#0 0x00007f3e0f03867d __poll (libc.so.6 + 0x10d67d)
#1 0x0000000000526ba7 _Z23flip_handler_thread_runv (gamescope + 0x126ba7)
#2 0x00000000004a31a3 _ZSt13__invoke_implIvPFvvEJEET_St14__invoke_otherOT0_DpOT1_ (gamescope + 0xa31a3)
#3 0x00000000004a30e5 _ZSt8__invokeIPFvvEJEENSt15__invoke_resultIT_JDpT0_EE4typeEOS3_DpOS4_ (gamescope + 0xa30e5)
#4 0x00000000004a2fc6 _ZNSt6thread8_InvokerISt5tupleIJPFvvEEEE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE (gamescope + 0xa2fc6)
#5 0x00000000004a2f1e _ZNSt6thread8_InvokerISt5tupleIJPFvvEEEEclEv (gamescope + 0xa2f1e)
#6 0x00000000004a2de8 _ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFvvEEEEEE6_M_runEv (gamescope + 0xa2de8)
#7 0x00007f3e0f2e7564 execute_native_thread_routine (libstdc++.so.6 + 0xe7564)
#8 0x00007f3e0efc2507 start_thread (libc.so.6 + 0x97507)
#9 0x00007f3e0f04640c __clone3 (libc.so.6 + 0x11b40c)
Stack trace of thread 3637:
#0 0x00007f3e0f046832 epoll_wait (libc.so.6 + 0x11b832)
#1 0x000000000048c115 _ZN9gamescope7CWaiterILm1024EE10PollEventsEi (gamescope + 0x8c115)
#2 0x000000000048040e _Z17steamcompmgr_mainiPPc (gamescope + 0x8040e)
#3 0x00000000004b22ff steamCompMgrThreadRun (gamescope + 0xb22ff)
#4 0x00000000004b2eeb _ZSt13__invoke_implIvPFviPPcEJiS1_EET_St14__invoke_otherOT0_DpOT1_ (gamescope + 0xb2eeb)
#5 0x00000000004b2e2c _ZSt8__invokeIPFviPPcEJiS1_EENSt15__invoke_resultIT_JDpT0_EE4typeEOS5_DpOS6_ (gamescope + 0xb2e2c)
#6 0x00000000004b2d5f _ZNSt6thread8_InvokerISt5tupleIJPFviPPcEiS3_EEE9_M_invokeIJLm0ELm1ELm2EEEEvSt12_Index_tupleIJXspT_EEE (gamescope + 0xb2d5f)
#7 0x00000000004b2cfc _ZNSt6thread8_InvokerISt5tupleIJPFviPPcEiS3_EEEclEv (gamescope + 0xb2cfc)
#8 0x00000000004b2ce0 _ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFviPPcEiS4_EEEEE6_M_runEv (gamescope + 0xb2ce0)
#9 0x00007f3e0f2e7564 execute_native_thread_routine (libstdc++.so.6 + 0xe7564)
#10 0x00007f3e0efc2507 start_thread (libc.so.6 + 0x97507)
#11 0x00007f3e0f04640c __clone3 (libc.so.6 + 0x11b40c)
Stack trace of thread 3636:
#0 0x00007f3e0f03867d __poll (libc.so.6 + 0x10d67d)
#1 0x00000000005525b4 run_pipewire (gamescope + 0x1525b4)
#2 0x0000000000554086 _ZSt13__invoke_implIvPFvP14pipewire_stateEJS1_EET_St14__invoke_otherOT0_DpOT1_ (gamescope + 0x154086)
#3 0x0000000000553ffb _ZSt8__invokeIPFvP14pipewire_stateEJS1_EENSt15__invoke_resultIT_JDpT0_EE4typeEOS5_DpOS6_ (gamescope + 0x153ffb)
#4 0x0000000000553f6b _ZNSt6thread8_InvokerISt5tupleIJPFvP14pipewire_stateES3_EEE9_M_invokeIJLm0ELm1EEEEvSt12_Index_tupleIJXspT_EEE (gamescope + 0x153f6b)
#5 0x0000000000553f24 _ZNSt6thread8_InvokerISt5tupleIJPFvP14pipewire_stateES3_EEEclEv (gamescope + 0x153f24)
#6 0x0000000000553f08 _ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFvP14pipewire_stateES4_EEEEE6_M_runEv (gamescope + 0x153f08)
#7 0x00007f3e0f2e7564 execute_native_thread_routine (libstdc++.so.6 + 0xe7564)
#8 0x00007f3e0efc2507 start_thread (libc.so.6 + 0x97507)
#9 0x00007f3e0f04640c __clone3 (libc.so.6 + 0x11b40c)
Stack trace of thread 3638:
#0 0x00007f3e0f038395 __open (libc.so.6 + 0x10d395)
#1 0x000000000046a212 _Z15statsThreadMainv (gamescope + 0x6a212)
#2 0x00000000004a31a3 _ZSt13__invoke_implIvPFvvEJEET_St14__invoke_otherOT0_DpOT1_ (gamescope + 0xa31a3)
#3 0x00000000004a30e5 _ZSt8__invokeIPFvvEJEENSt15__invoke_resultIT_JDpT0_EE4typeEOS3_DpOS4_ (gamescope + 0xa30e5)
#4 0x00000000004a2fc6 _ZNSt6thread8_InvokerISt5tupleIJPFvvEEEE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE (gamescope + 0xa2fc6)
#5 0x00000000004a2f1e _ZNSt6thread8_InvokerISt5tupleIJPFvvEEEEclEv (gamescope + 0xa2f1e)
#6 0x00000000004a2de8 _ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFvvEEEEEE6_M_runEv (gamescope + 0xa2de8)
#7 0x00007f3e0f2e7564 execute_native_thread_routine (libstdc++.so.6 + 0xe7564)
#8 0x00007f3e0efc2507 start_thread (libc.so.6 + 0x97507)
#9 0x00007f3e0f04640c __clone3 (libc.so.6 + 0x11b40c)
ELF object binary architecture: AMD x86-64
backtrace:
Core was generated by `/usr/bin/gamescope --prefer-output *,eDP-1 --xwayland-count 2 --default-touch-m'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00000000004b4d40 in TimelinePointToEventFd (oPoint=...) at ../src/wlserver.cpp:142
142 int nRet = drmSyncobjQuery( oPoint->pTimeline->drm_fd, &oPoint->pTimeline->handle, &uSignalledPoint, 1u );
[Current thread is 1 (Thread 0x7f3e0eaf5480 (LWP 3574))]
(gdb) bt
#0 0x00000000004b4d40 in TimelinePointToEventFd (oPoint=std::optional = {...}) at ../src/wlserver.cpp:142
#1 0x00000000004b5067 in PrepareCommit (surf=0x1d25e2b0, buf=0x1d25f1d0) at ../src/wlserver.cpp:210
#2 0x00000000004b5295 in gamescope_xwayland_server_t::wayland_commit (this=0x1cb81430, surf=0x1d25e2b0, buf=0x1d25f1d0)
at ../src/wlserver.cpp:254
#3 0x00000000004b558e in xwayland_surface_commit (wlr_surface=0x1d25e2b0) at ../src/wlserver.cpp:325
#4 0x00000000004b5fde in handle_wl_surface_commit (l=0x1d25def8, data=0x1d25e2b0) at ../src/wlserver.cpp:588
#5 0x00007f3e0f9be06c in wl_signal_emit_mutable () at /lib64/libwayland-server.so.0
#6 0x000000000062103f in surface_commit_state (surface=0x1d25e2b0, next=0x1d25e430) at ../subprojects/wlroots/types/wlr_compositor.c:560
#7 0x0000000000621173 in surface_handle_commit (client=0x1d1dcb20, resource=0x1d1e45b0) at ../subprojects/wlroots/types/wlr_compositor.c:591
#8 0x00007f3e0f490056 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#9 0x00007f3e0f48c6a0 in ffi_call_int
(cif=cif@entry=0x7ffc7b2df6c0, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0)
at ../src/x86/ffi64.c:673
#10 0x00007f3e0f48f4ee in ffi_call (cif=0x7ffc7b2df6c0, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>)
at ../src/x86/ffi64.c:710
#11 0x00007f3e0f9bcb23 in wl_closure_invoke.constprop () at /lib64/libwayland-server.so.0
#12 0x00007f3e0f9c1832 in wl_client_connection_data () at /lib64/libwayland-server.so.0
#13 0x00007f3e0f9bfc92 in wl_event_loop_dispatch () at /lib64/libwayland-server.so.0
#14 0x00000000004b9679 in wlserver_run () at ../src/wlserver.cpp:2018
#15 0x00000000004b2228 in main (argc=16, argv=0x7ffc7b2dfee8) at ../src/main.cpp:983
matt@threadripper-pc:~$ inxi -GS
System:
Host: threadripper-pc Kernel: 6.10.2-200.fsync.fc40.x86_64 arch: x86_64
bits: 64
Desktop: KDE Plasma v: 6.1.1 Distro: Nobara Linux 40 (KDE Plasma)
Graphics:
Device-1: AMD Navi 31 [Radeon RX 7900 XT/7900 XTX/7900M] driver: amdgpu
v: kernel
Display: wayland server: Xwayland v: 24.1.0 compositor: kwin_wayland
driver: N/A resolution: 3440x1440
API: EGL v: 1.5 drivers: radeonsi,swrast
platforms: wayland,x11,surfaceless,device
API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 24.1.3 renderer: AMD
Radeon RX 7900 XTX (radeonsi navi31 LLVM 18.1.6 DRM 3.57
6.10.2-200.fsync.fc40.x86_64)
API: Vulkan v: 1.3.280 drivers: N/A surfaces: xcb,xlib,wayland
matt@threadripper-pc:~$ gamescope --version
[gamescope] [Info] console: gamescope version 3.14.26-3-gf35e1b3
@matte-schwartz I think I know exactly whats causing the crash after the wlroots upgrade in upstream... because there was an extra nullpointer check (that I found to be necessary at the time) that I had added to my now-manually-merged PR that didn't make it into upstream. I had noticed that the check didn't make it into upstream, but I wasn't certain if it was still needed, because I could no longer reproduce the issue thru the one method of reproducing it that I had access to... I'll create a PR with the missing nullptr check and then you can check if that fixes it
@kisak-valve This issue should be fixed as of PR #1444 being merged
Closing per the last comment.