protonscr

Steam freezes when a controller is connected

steamclosed Steam clientWindow managerDistro Family: ArchGeneral controller / Steam Input
ValveSoftware/steam-for-linux#7992 · opened 2021-08-15 by Scrumplex · updated 2024-04-21 · 12 comments · github
SScrumplex 2021-08-15 github

Your system information

  • Steam client version (build number or date): Aug 11 2021, at 17:14:33
  • Distribution (e.g. Ubuntu): Arch Linux (testing)
  • Opted into Steam client beta?: Yes
  • Have you checked for system updates?: Yes

Please describe your issue in as much detail as possible:

When I connect my DualShock 4 (both USB and BT) or power on my Steam Controller Steam freezes. It initializes the controller (DS4 LED changes to my settings). Most of the time I can then kill the process and restart with the controller still being connected and also working.

Steps for reproducing this issue:

  1. Start Steam
  2. Connect Controller
Kkisak-valve maintainer 2021-08-15 github

Hello @Scrumplex, this sounds similar to #7649. If you wait a while (I'm guessing 5 minutes max), does Steam recover on its own?

Also, if you run steam-runtime from a terminal, does the terminal spew give any hints? (You might encounter #7935)

SScrumplex 2021-08-15 github

I think #7649 is unrelated as it affects hid_playstation (DS5) and not hid_sony (DS4). Also my client freezes when I connect a DS4 or a Steam Controller.

I am in fact encountering #7935, which is why I am running steam-native currently. So I can't really test it effectively with steam-runtime

SScrumplex 2021-08-15 github

I downgraded my freetype package to test with steam-runtime and the issue persists: This is the log that appeared after connecting my DS4:

steam[136199]: Lighthouse IMU HID opened
steam[136199]: 822BFA2F23-RYB: Triggered keepalive (succeeded)
steam[136199]: 416F02C391-LYM: Triggered keepalive (succeeded)
Installing breakpad exception handler for appid(steam)/version(1628721164)
Local Device Found
  type: 054c 09cc
  path: /dev/hidraw13
  serial_number: a4:53:85:67:c1:2d - 0
  Manufacturer: Sony Interactive Entertainment
  Product:      Wireless Controller
  Release:      100
  Interface:    3

!! Steam controller device opened for index 4.
ioctl (GFEATURE): Broken pipe
Steam Controller reserving XInput slot 0
DS4 Controller calibration:
  Sensor 0: bias 0, sensitivity 1.9583  Sensor 1: bias -6, sensitivity 1.9439  Sensor 2: bias -15, sensitivity 1.8980  Sensor 3: bias 0, sensitivity 1.9982  Sensor 4: bias 1, sensitivity 1.9583  Sensor 5: bias 0, sensitivity 2.0078
Controller 4 connected, configuring it now...
Installing breakpad exception handler for appid(steam)/version(1628721164)
!! Controller 4 attributes:
  Type: 34
  ProductID: 2508
  Serial: a4538567c12d
  Capabilities: 00075bff
  Firmware Version: 0
  Firmware Build Time: 2147483647 (Tue, 19 Jan 2038 03:14:07 GMT)
  Bootloader Build Time: 2147483647 (Tue, 19 Jan 2038 03:14:07 GMT)
Loaded Config for Local Selection Path for App ID 413090, Controller 4: /home/scrumplex/.local/share/Steam/steamapps/workshop/content/241100/1689651975/1007024772344596662_legacy.bin
[413090]Non-Steam Controller Configs Enabled: 1
BYieldingQueryAccountsRegisteredToController
Loaded Config for Local Selection Path for App ID 413090, Controller 4: /home/scrumplex/.local/share/Steam/steamapps/workshop/content/241100/1557869049/956347096063717719_legacy.bin
Could not load local selection (), local override (/home/scrumplex/.local/share/Steam//controller_config/basicui_gamepad.vdf), or user path (/home/scrumplex/.local/share/Steam/userdata/162130624/config/controller_configs/basicui_gamepad.vdf), checking last resort path: /home/scrumplex/.local/share/Steam//controller_base/basicui_gamepad.vdf
Loaded Config for Last Resort Path for App ID 769, Controller 4: /home/scrumplex/.local/share/Steam//controller_base/basicui_gamepad.vdf
Fetching Config Sets 4
CClientJobFetchPersonalizationFileID
OnFocusWindowChanged to window type: k_nGameIDControllerConfigs_ClientUI, AppID 769
Could not load local selection (), local override (/home/scrumplex/.local/share/Steam//controller_config/basicui_gamepad.vdf), or user path (/home/scrumplex/.local/share/Steam/userdata/162130624/config/controller_configs/basicui_gamepad.vdf), checking last resort path: /home/scrumplex/.local/share/Steam//controller_base/basicui_gamepad.vdf
Loaded Config for Last Resort Path for App ID 769, Controller 4: /home/scrumplex/.local/share/Steam//controller_base/basicui_gamepad.vdf
Opted-in Controller Mask for AppId 413080: 9
Set Account Config Sets 4 1 1
ioctl (GFEATURE): Broken pipe

SScrumplex 2021-08-15 github

If you wait a while (I'm guessing 5 minutes max), does Steam recover on its own?

Btw. I left it for half an hour once and it didn't recover

SScrumplex 2021-09-10 github

After some testing today I found out that this happens on Wayland but not on X11. (So hangs on Sway, but works with i3).
I can also only reproduce this on my main PC (AMD GPU) and not on my Laptop (Intel iGPU), both running Arch Linux with Sway.

SScrumplex 2021-09-10 github

Okay. I just realized that I was running xorg-xwayland-git on my PC while running xorg-xwayland on my laptop. Downgrading to the stable release "fixed" the issue. So this is apparently a bug with XWayland?

I am gonna bisect until I found the problematic commit

SScrumplex 2021-09-10 github

Bisect log of XWayland if anyone is interested

# bad: [d68b50ec032fe4f02bde817abfd30328ec96a11c] Fix compilation with windows.h from latest w32api
# good: [1dbb96ae48f1fa69752e71f25f03d2f733918ffb] Bump version for the Xwayland 21.1.2 release
git bisect start 'd68b50ec032fe4f02bde817abfd30328ec96a11c' 'xwayland-21.1.2'
# good: [c7730cfe5577ebde006d408f502766d8c3a73670] xwayland: Translate keyboard grabs on the root window
git bisect good c7730cfe5577ebde006d408f502766d8c3a73670
# good: [407a2234b32d9cb3fed2cc7e8069bb41b98e143f] test/xi2: Update tests for gesture event types
git bisect good 407a2234b32d9cb3fed2cc7e8069bb41b98e143f
# good: [b6d54b0f5d2fb3dc8a4b2812bfee94112c332256] present: Dispatch clear_window_flip via present_screen_priv hook
git bisect good b6d54b0f5d2fb3dc8a4b2812bfee94112c332256
# bad: [31d2ebca77fcabec81194ae6dcd724c699b1b513] xwayland/present: Drop target_msc member from struct xwl_present_event
git bisect bad 31d2ebca77fcabec81194ae6dcd724c699b1b513
# good: [0c0cbbc7cb4fa917a2b33494efb6dc03e5de9051] present: Remove present_wnmd_info_rec
git bisect good 0c0cbbc7cb4fa917a2b33494efb6dc03e5de9051
# good: [fc53e3c536b5a338c595b5724c7d0b4734e45871] xwaland/present: Drop flip_pending member of struct xwl_present_window
git bisect good fc53e3c536b5a338c595b5724c7d0b4734e45871
# bad: [f8c086b2145d1c9364e9b43ff4d796791d8af169] xwayland/present: Fold xwl_present_event_notify into its caller
git bisect bad f8c086b2145d1c9364e9b43ff4d796791d8af169
# bad: [4503c8d9ea7df5bda470501e638a730d91d718c9] xwayland/present: Fold xwl_present_idle_notify into its caller
git bisect bad 4503c8d9ea7df5bda470501e638a730d91d718c9
# bad: [b2a06e0700fa48c1e77fc687e6af39a4bb7c2ceb] xwayland/present: Drop sync_flip member of struct xwl_present_window
git bisect bad b2a06e0700fa48c1e77fc687e6af39a4bb7c2ceb
# first bad commit: [b2a06e0700fa48c1e77fc687e6af39a4bb7c2ceb] xwayland/present: Drop sync_flip member of struct xwl_present_window

I suspect this issue is because Steam tries to show the little popup on the bottom right corner about the controller profile that's being used.

Kkisak-valve maintainer 2021-09-10 github

Hello @Scrumplex, it may be worthwhile to also report this issue to the xserver issue tracker (https://gitlab.freedesktop.org/xorg/xserver/-/issues).

SScrumplex 2021-09-10 github

Opened an issue over there already :D

https://gitlab.freedesktop.org/xorg/xserver/-/issues/1219

SScrumplex 2021-11-12 github

I totally forgot about this. This was actually a bug with XWayland that's fixed now.

Gguoyunhe 2024-04-21 github

I am having this issue with xwayland 23.2.6. Not sure if it is an issue with xwayland or something else...

Nothing extracted yet.