ValveSoftware / gamescope

SteamOS session compositing window manager
Other
3.09k stars 207 forks source link

Regression with plasma 6.2 #1569

Open sebastiencaty opened 2 weeks ago

sebastiencaty commented 2 weeks ago

Is there an existing issue for this?

Are you using any gamescope patches or a forked version of gamescope?

Current Behavior

Hi,

I cannot launch any game anymore with gamescope since upgrading to Plasma 6.2. The game just hang and can't be stopped from steam. I have to kill the process. Without gamescope, the game works fine (except for HDR). I rollbacked kernel, mesa, recompiled gamescope to the latest (was running well from somewhere a few months ago).

Haven't tried to roll back KDE yet but I could if needed.

Sorry not sure where to open this issue.

Steps To Reproduce

Tried with HFW and Plague Tale: Requiem with launch option : ENABLE_GAMESCOPE_WSI=1 DXVK_HDR=1 /usr/local/bin/gamescope -f -w 3440 -h 1440 --hdr-enabled --hdr-debug-force-output --hdr-sdr-content-nits 120 %command%

Hardware information

- Distro: Gentoo
- CPU: Ryzen 6900X
- GPU: 7900XTX
- Driver Version: Mesa 24.3.0-devel (git-2c31b9e6c2)

kernel 6.12-rc2 (worked on 6.12-rc1)

Software information

- Desktop environment: KDE Plasma 6.2
- Session type: Wayland
- Gamescope version:  3.15.9-16-g38e9074 (gcc 13.3.1)
- Gamescope launch command(s): 
gamescope -f -w 3440 -h 1440 --hdr-enabled --hdr-debug-force-output --hdr-sdr-content-nits 120 %command%

also without HDR
gamescope -f -w 3440 -h 1440 --rt %command%

Which gamescope backends have the issue you are reporting?

Logging, screenshots, or anything else

[gamescope] [Info] console: gamescope version 3.15.9-16-g38e9074 (gcc 13.3.1) [gamescope] [Info] scriptmgr: Loading scripts from: '/usr/share/gamescope/scripts' [gamescope] [Warn] scriptmgr: Directory '/usr/share/gamescope/scripts' does not exist [gamescope] [Info] scriptmgr: Loading scripts from: '/etc/gamescope/scripts' [gamescope] [Warn] scriptmgr: Directory '/etc/gamescope/scripts' does not exist Game Recording - would start recording game 1182900, but recording for this game is disabled Adding process 7794 for gameID 1182900 ATTENTION: default value of option vk_khr_present_wait overridden by environment. [gamescope] [Info] vulkan: selecting physical device 'AMD Radeon RX 7900 XTX (RADV NAVI31)': queue family 1 (general queue family 0) [gamescope] [Info] vulkan: physical device supports DRM format modifiers [Gamescope WSI] Forcing on VK_EXT_swapchain_maintenance1. [gamescope] [Info] wlserver: [backend/headless/backend.c:67] Creating headless backend [gamescope] [Info] xdg_backend: Seat name: seat0 [gamescope] [Info] vulkan: supported DRM formats for sampling usage: [gamescope] [Info] vulkan: AR24 (0x34325241) [gamescope] [Info] vulkan: XR24 (0x34325258) [gamescope] [Info] vulkan: AB24 (0x34324241) [gamescope] [Info] vulkan: XB24 (0x34324258) [gamescope] [Info] vulkan: RG16 (0x36314752) [gamescope] [Info] vulkan: NV12 (0x3231564E) [gamescope] [Info] vulkan: AB4H (0x48344241) [gamescope] [Info] vulkan: XB4H (0x48344258) [gamescope] [Info] vulkan: AB48 (0x38344241) [gamescope] [Info] vulkan: XB48 (0x38344258) [gamescope] [Info] vulkan: AB30 (0x30334241) [gamescope] [Info] vulkan: XB30 (0x30334258) [gamescope] [Info] vulkan: AR30 (0x30335241) [gamescope] [Info] vulkan: XR30 (0x30335258) [gamescope] [Info] wlserver: Using explicit sync when available [gamescope] [Info] wlserver: Running compositor on wayland display 'gamescope-0' [gamescope] [Info] wlserver: [backend/headless/backend.c:17] Starting headless backend [gamescope] [Info] wlserver: Successfully initialized libei for input emulation! [gamescope] [Info] wlserver: [xwayland/server.c:107] Starting Xwayland on :1 [gamescope] [Info] pipewire: stream state changed: connecting [gamescope] [Info] pipewire: stream state changed: paused [gamescope] [Info] pipewire: stream available on node ID: 76 [gamescope] [Info] xwm: Embedded, no cursor set. Using left_ptr by default. [gamescope] [Info] vblank: Using timerfd. [gamescope] [Info] xdg_backend: PreferredMetadata: Red: 0.69042 0.30372, Green: 0.24024 0.71582, Blue: 0.14648 0.05762, White: 0.3125 0.3291, Max Luminance: 427 nits, Min Luminance: 0 nits, Max Full Frame Luminance: 254 nits [gamescope] [Info] edid: Patching res 800x1280 -> 3440x1440 [gamescope] [Info] launch: Primary child shut down!

matte-schwartz commented 2 weeks ago

Thanks for the detailed report! Unfortunately there's really not much to go off there in the logs so far... if you enable Proton logging, do games generate any logs in your home directory? Would be good to see one if so. My distro doesn't have Plasma 6.2 yet but I'll try to see if I run into the same issue when it does.

misyltoad commented 2 weeks ago

You are missing -- before %command%

sebastiencaty commented 2 weeks ago

No log at all with PROTON_LOG=1. I can get logs fine without gamescope in the launch command.

There's pleny of process, the game seems to be mostly running :

gamescope -f -w 3440 -h 1440 --rt /home/xxx/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- /home/xxx/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=2420110 -- /home/xxx/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/_v2-entry-point --verb=waitforexitandrun -- /home/xxx/Steam/steamapps/common/Proton - Experimental/proton waitforexitandrun /home/xxx/Steam/steamapps/common/Horizon Forbidden West Complete Edition/HorizonForbiddenWest.exe

Attaching to this process doesn't show much going on :

strace: Process 90130 attached
futex(0x55f864549360, FUTEX_WAIT_PRIVATE, 2, NULL

No GPU error, desktop keeps going on fine, nothing in dmesg. It justs hangs there doing nothing.

I'm going to revert to plasma 6.1.5.

sebastiencaty commented 2 weeks ago

You are missing -- before %command%

shaka when the walls fell

No sure since when I dropped it but it must have been for a while. So the game now launches fine with it back. The hang does still occurs but on exit. Have to go kill -9. Steam won't stop the game, exiting steam leaves a few running.

Going to test back on plasma 6.1.5

misyltoad commented 2 weeks ago

Darkmok and Jalad at Tanagra

sebastiencaty commented 2 weeks ago

Back on Plasma 6.1.5, didn't change behavior. I've no idea how it worked but all my launch commands for games that I use gamescope for HDR were missing -- anyways...

The only thing that I can reproduce is the hanging when exiting. Previous gamescope version I used that behaves correctly is [gamescope] [Info] console: gamescope version 3.14.23-3-g9860a34. Just switching from this to [gamescope] [Info] console: gamescope version 3.15.9-16-g38e9074 (gcc 13.3.1) is enough to reproduce. A lot of commit to bisect here.

I guess plasma might not be at fault here. Too many moving pieces.

sebastiencaty commented 2 weeks ago

Bisected my exit hang to this commit a493c58773c774c832ef426b5712b6f20629ee12

matte-schwartz commented 2 weeks ago

@sebastiencaty I'm able to repro your issue with:

❯ gamescope -- vkcube
[gamescope] [Info]  console: gamescope version 3.15.9-17-gb488577 (gcc 14.2.1)

image

with your bisected commit also lining up with when it stops closing the window properly for me

matte-schwartz commented 2 weeks ago

from my rather janky gdb debugging endeavors this morning, it seems like the issue occurs specifically somewhere within the thread shutdown process maybe. checking out the commit before the config system was added, results in pretty normal gdb logs while quitting with gamescopectl shutdown:

[gamescope] [Info]  console: Shutting down...
[Thread 0x7ffff54006c0 (LWP 31366) exited]
[Thread 0x7ffff40006c0 (LWP 31368) exited]
(EE) failed to read Wayland events: Broken pipe
[gamescopereaper] [Info]  reaper: Parent of gamescopereaper was killed. Killing children.
[Thread 0x7fffe6c006c0 (LWP 31390) exited]
[Gamescope WSI] getWindowRect: xcb_get_geometry failed for window 0x400000.
[Gamescope WSI] getLargestObscuringWindowSize: xcb_query_tree failed for window 0x400000.
[Gamescope WSI] getToplevelWindow: xcb_query_tree failed for window 0x400000.
[Gamescope WSI] canBypassXWayland: failed to get window info for window 0x400000.
[Gamescope WSI] getWindowRect: xcb_get_geometry failed for window 0x400000.
[Gamescope WSI] getWindowRect: xcb_get_geometry failed for window 0x400000.
[Gamescope WSI] getLargestObscuringWindowSize: xcb_query_tree failed for window 0x400000.
[Gamescope WSI] getToplevelWindow: xcb_query_tree failed for window 0x400000.
[Gamescope WSI] canBypassXWayland: failed to get window info for window 0x400000.
[Gamescope WSI] Creating swapchain for xid: 0x400000 - minImageCount: 4 - format: VK_FORMAT_B8G8R8A8_UNORM - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - flip: false
[Gamescope WSI] Refusing to make swapchain (unsupported VkFormat) for xid: 0x400000 - format: VK_FORMAT_B8G8R8A8_UNORM - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - flip: false
[gamescope] [Info]  launch: Primary child shut down!
[Thread 0x7fffecc006c0 (LWP 31374) exited]
[Thread 0x7fffe62006c0 (LWP 31392) exited]
[Thread 0x7ffff4a006c0 (LWP 31367) exited]
[Thread 0x7fffe76006c0 (LWP 31389) exited]
[Thread 0x7fffed6006c0 (LWP 31373) exited]
[Thread 0x7fffeea006c0 (LWP 31371) exited]
[Thread 0x7fffef4006c0 (LWP 31370) exited]
[Thread 0x7fffefe006c0 (LWP 31369) exited]
[Thread 0x7ffff6c4bac0 (LWP 31361) exited]
[Thread 0x7fffee0006c0 (LWP 31372) exited]
[New process 31361]
[Inferior 1 (process 31361) exited normally]

while the commit afterwards, it seems like it only gets part of the way through this process with the same commands:

[gamescope] [Info]  console: Shutting down...
[Thread 0x7ffff52006c0 (LWP 31784) exited]
[Thread 0x7ffff3e006c0 (LWP 31786) exited]
[Thread 0x7fffe6c006c0 (LWP 31809) exited]
[gamescopereaper] [Info]  reaper: Parent of gamescopereaper was killed. Killing children.
[gamescope] [Info]  launch: Primary child shut down!
[Thread 0x7fffe62006c0 (LWP 31811) exited]
[Thread 0x7fffeea006c0 (LWP 31790) exited]

maybe when i can figure out live gdb a bit better i can get something more actionable

EDIT:

good strace log when shutdown with Ctrl + C: gamescope_strace_good.log

bad strace log when shutdown with Ctrl + C: gamescope_strace_bad.log