YARG icon indicating copy to clipboard operation
YARG copied to clipboard

Connecting an Xbox One Bluetooth controller to Steam Deck crashes the game past version b2508

Open Shockah opened this issue 10 months ago • 13 comments

I have a Harmonix PlayStation 3 Rock Band Guitar, as well as a Drum Kit set, which both work fine out of the box with the game. I've done initial testing on a standalone Windows PC, but the plan was to move the setup to a Steam Deck. Guitar and drums work as expected, but I wanted a handy way to navigate the menu, as well as a controller for vocals (Star Power button). As soon as I connect my Bluetooth controller via Bluetooth to the Steam Deck, the game crashes to the launcher (very rarely freezes instead). Launching the game while the controller is connected also results in the game showing a single frame (some kind of colorful background? part of the menu, I suppose), and then crashes (or rarely freezes instead).

Works fine on stable, and on nightly up until b2508. Seems that b2509 (https://github.com/YARC-Official/YARG-BleedingEdge/releases/tag/b2509) while adding support for Xbox instruments, broke standard Xbox controllers. Tried several newer nightlies, including the current latest (b2931), and they all present the same issue.

Let me know if there's anything I can share that would help in pinpointing the issue - I'm not quite sure what's gonna help, and navigating the filesystem on the Steam Deck is a pain, so I need to know what to look for.

Shockah avatar Feb 28 '25 22:02 Shockah

Can you go to ~/.config/unity3d/YARC/YARG and post the Player.log file here? Hard to say what exactly might be causing this without seeing a crash log.

TheNathannator avatar Feb 28 '25 23:02 TheNathannator

Here's the requested file and some files around it. Player-prev.log and 2025-03-01_3.log should correspond to a session where I've started the game without the Xbox One controller connected, and only connected it after the game booted up to the menu, while Player.log and 2025-03-01_4.log are logs where I've had the Xbox One controller already connected and then booted the game (both ways causing a crash).

Player-prev.log 2025-03-01_4.log 2025-03-01_3.log settings.json Player.log

Shockah avatar Mar 01 '25 07:03 Shockah

Hmmm, this crash has been reported in the past, but I wasn't really able to do anything about it, since it happening in the first place makes absolutely no sense to me lol, and I wasn't able to reproduce it on my Linux setup. I'll take another look into this and see if I can replicate and trace the cause.

Some technical details: there's a double-free happening inside of libudev when trying to retrieve the revision number of the Xbox One controller, something is causing the udev_enumerate handle created as part of retrieving that to get freed earlier than expected. I've inspected the code top-to-bottom several times and don't see an obvious reason as to why this would be the case, and at this point I suspect it's getting tied to another handle behind-the-scenes.

There's a bandage-patch fix for the crash here, but I've been hesitant on merging it until I can isolate the root cause and determine for sure that it won't cause handle leaks on setups where it doesn't currently crash.

tl;dr you've come across a big-pain-in-the-butt issue lol

TheNathannator avatar Mar 01 '25 08:03 TheNathannator

For what it's worth, as a developer myself, I'd gladly help with debugging the issue, but I think I'd be limited to only testing various builds (be it actual attempted fixes or just builds with extra logs). Setting up a proper development environment on a Steam Deck would be a bit too much for me, hah.

Shockah avatar Mar 01 '25 09:03 Shockah

Noticing that this also occurs with DualSense controllers, for some reason.

Sterophonick avatar Mar 27 '25 02:03 Sterophonick

The same is happening here! Wii remote through Bluetooth on Debian 12

Denperidge avatar May 26 '25 20:05 Denperidge

Hi guys Same issue with Polybar Mini pico BT build, latest firmware. YARG b3071 & Stable 0.13.0

As xinput

Could not create a device for 'Generic SantrollerBT (Linux)' (exception: UnityEngine.InputSystem.Layouts.InputControlLayout+LayoutNotFoundException: Cannot find control layout 'Unsupported'
  at UnityEngine.InputSystem.Layouts.InputControlLayout+Cache.FindOrLoadLayout (System.String name, System.Boolean throwIfNotFound) [0x0003b] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 
  at UnityEngine.InputSystem.Layouts.InputDeviceBuilder.FindOrLoadLayout (System.String name) [0x00005] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 
  at UnityEngine.InputSystem.Layouts.InputDeviceBuilder.InstantiateLayout (UnityEngine.InputSystem.Utilities.InternedString layout, UnityEngine.InputSystem.Utilities.InternedString variants, UnityEngine.InputSystem.Utilities.InternedString name, UnityEngine.InputSystem.InputControl parent) [0x00006] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 
  at UnityEngine.InputSystem.Layouts.InputDeviceBuilder.Setup (UnityEngine.InputSystem.Utilities.InternedString layout, UnityEngine.InputSystem.Utilities.InternedString variants, UnityEngine.InputSystem.Layouts.InputDeviceDescription deviceDescription) [0x0000b] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 
  at UnityEngine.InputSystem.InputDevice.Build[TDevice] (System.String layoutName, System.String layoutVariants, UnityEngine.InputSystem.Layouts.InputDeviceDescription deviceDescription, System.Boolean noPrecompiledLayouts) [0x00087] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 
  at UnityEngine.InputSystem.InputManager.AddDevice (UnityEngine.InputSystem.Utilities.InternedString layout, System.Int32 deviceId, System.String deviceName, UnityEngine.InputSystem.Layouts.InputDeviceDescription deviceDescription, UnityEngine.InputSystem.InputDevice+DeviceFlags deviceFlags, UnityEngine.InputSystem.Utilities.InternedString variants) [0x0001a] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 
  at UnityEngine.InputSystem.InputManager.AddDevice (UnityEngine.InputSystem.Layouts.InputDeviceDescription description, System.Boolean throwIfNoLayoutFound, System.String deviceName, System.Int32 deviceId, UnityEngine.InputSystem.InputDevice+DeviceFlags deviceFlags) [0x0004e] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 
  at UnityEngine.InputSystem.InputManager.OnNativeDeviceDiscovered (System.Int32 deviceId, System.String deviceDescriptor) [0x000c4] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 )
double free or corruption (out)
Caught fatal signal - signo:6 code:-6 errno:0 addr:0x3e800000d74
Obtained 34 stack frames.
#0  0x007f1a1783e540 in __sigaction
#1  0x007f1a1789894c in pthread_key_delete
#2  0x007f1a1783e410 in gsignal
#3  0x007f1a1782557a in abort
#4  0x007f1a17826613 in perror
#5  0x007f1a178a2d75 in timer_settime
#6  0x007f1a178a4dc0 in __default_morecore
#7  0x007f1a178a4fd1 in __default_morecore
#8  0x007f1a101dc018 in (Unknown)
#9  0x007f1a101dc0b2 in (Unknown)
#10 0x007f1a101e49fd in (Unknown)
#11 0x007f1a101f0735 in udev_device_unref
#12 0x000000406e8853 in (wrapper managed-to-native) object:wrapper_native_0x7f1a101f0710 (intptr)
#13 0x00000040acaa73 in HIDrogen.Imports.Linux.Udev:device_unref (intptr)
#14 0x00000040aca9ff in HIDrogen.Imports.Linux.udev_device:ReleaseHandle ()
#15 0x000000405ed541 in System.Runtime.InteropServices.SafeHandle:DangerousReleaseInternal (bool)
#16 0x0000004070b667 in System.Runtime.InteropServices.SafeHandle:InternalDispose ()
#17 0x0000004070b603 in System.Runtime.InteropServices.SafeHandle:Dispose (bool)
#18 0x0000004070b5d5 in System.Runtime.InteropServices.SafeHandle:Dispose ()
#19 0x00000040ac9bf2 in HIDrogen.Backend.HidApiBackend:PlatformGetVersionNumber (string,uint16&,bool&)
#20 0x00000040ac960f in HIDrogen.Backend.HidApiBackend:PlatformGetVersionNumber (string,uint16&)
#21 0x000000406f05b7 in HIDrogen.Backend.HidApiBackend:MakeDeviceDescription (HIDrogen.Imports.hid_device_info&,UnityEngine.InputSystem.Layouts.InputDeviceDescription&,UnityEngine.InputSystem.HID.HID/HIDDeviceDescriptor&,int&)
#22 0x000000406eb573 in HIDrogen.Backend.HidApiBackend:EnumerateDevices ()
#23 0x000000407f690f in HIDrogen.Backend.HidApiBackend:PlatformMonitor (bool&)
#24 0x000000407f659f in HIDrogen.Backend.HidApiBackend:PlatformMonitor ()
#25 0x000000406ead97 in HIDrogen.Backend.HidApiBackend:DeviceDiscoveryThread ()
#26 0x000000406447e3 in System.Threading.ThreadHelper:ThreadStart_Context (object)
#27 0x00000040644092 in System.Threading.ExecutionContext:RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
#28 0x00000040643b93 in System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
#29 0x000000406439df in System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object)
#30 0x000000406433a3 in System.Threading.ThreadHelper:ThreadStart ()
#31 0x0000004064332b in (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)

As HID

double free or corruption (out)
Caught fatal signal - signo:6 code:-6 errno:0 addr:0x3e8000027dd
Obtained 34 stack frames.
#0  0x007efcaf43e540 in __sigaction
#1  0x007efcaf49894c in pthread_key_delete
#2  0x007efcaf43e410 in gsignal
#3  0x007efcaf42557a in abort
#4  0x007efcaf426613 in perror
#5  0x007efcaf4a2d75 in timer_settime
#6  0x007efcaf4a4dc0 in __default_morecore
#7  0x007efcaf4a4fd1 in __default_morecore
#8  0x007efca6f47989 in udev_enumerate_scan_devices
#9  0x007efca6f47a39 in udev_enumerate_scan_devices
#10 0x007efca6f487ba in udev_enumerate_scan_devices
#11 0x007efca6f2c68d in udev_device_unref
#12 0x00000041222d63 in (wrapper managed-to-native) object:wrapper_native_0x7efca6f2c640 (intptr)
#13 0x00000041555fb3 in HIDrogen.Imports.Linux.Udev:device_unref (intptr)
#14 0x00000041555f3f in HIDrogen.Imports.Linux.udev_device:ReleaseHandle ()
#15 0x000000410fd541 in System.Runtime.InteropServices.SafeHandle:DangerousReleaseInternal (bool)
#16 0x00000041231477 in System.Runtime.InteropServices.SafeHandle:InternalDispose ()
#17 0x00000041231413 in System.Runtime.InteropServices.SafeHandle:Dispose (bool)
#18 0x00000041231375 in System.Runtime.InteropServices.SafeHandle:Dispose ()
#19 0x00000041554072 in HIDrogen.Backend.HidApiBackend:PlatformGetVersionNumber (string,uint16&,bool&)
#20 0x0000004155399f in HIDrogen.Backend.HidApiBackend:PlatformGetVersionNumber (string,uint16&)
#21 0x0000004122c3f7 in HIDrogen.Backend.HidApiBackend:MakeDeviceDescription (HIDrogen.Imports.hid_device_info&,UnityEngine.InputSystem.Layouts.InputDeviceDescription&,UnityEngine.InputSystem.HID.HID/HIDDeviceDescriptor&,int&)
#22 0x00000041225723 in HIDrogen.Backend.HidApiBackend:EnumerateDevices ()
#23 0x0000004131a0af in HIDrogen.Backend.HidApiBackend:PlatformMonitor (bool&)
#24 0x00000041319d3f in HIDrogen.Backend.HidApiBackend:PlatformMonitor ()
#25 0x00000041225297 in HIDrogen.Backend.HidApiBackend:DeviceDiscoveryThread ()
#26 0x00000041154463 in System.Threading.ThreadHelper:ThreadStart_Context (object)
#27 0x00000041153ed2 in System.Threading.ExecutionContext:RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
#28 0x00000041153a73 in System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
#29 0x0000004115399f in System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object)
#30 0x000000411533a3 in System.Threading.ThreadHelper:ThreadStart ()
#31 0x0000004115332b in (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)

Cheers

spoonieau avatar Aug 06 '25 12:08 spoonieau

Hi guys Same issue with Polybar Mini pico BT build, latest firmware. YARG b3071 & Stable 0.13.0

As xinput

Could not create a device for 'Generic SantrollerBT (Linux)' (exception: UnityEngine.InputSystem.Layouts.InputControlLayout+LayoutNotFoundException: Cannot find control layout 'Unsupported' at UnityEngine.InputSystem.Layouts.InputControlLayout+Cache.FindOrLoadLayout (System.String name, System.Boolean throwIfNotFound) [0x0003b] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 at UnityEngine.InputSystem.Layouts.InputDeviceBuilder.FindOrLoadLayout (System.String name) [0x00005] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 at UnityEngine.InputSystem.Layouts.InputDeviceBuilder.InstantiateLayout (UnityEngine.InputSystem.Utilities.InternedString layout, UnityEngine.InputSystem.Utilities.InternedString variants, UnityEngine.InputSystem.Utilities.InternedString name, UnityEngine.InputSystem.InputControl parent) [0x00006] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 at UnityEngine.InputSystem.Layouts.InputDeviceBuilder.Setup (UnityEngine.InputSystem.Utilities.InternedString layout, UnityEngine.InputSystem.Utilities.InternedString variants, UnityEngine.InputSystem.Layouts.InputDeviceDescription deviceDescription) [0x0000b] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 at UnityEngine.InputSystem.InputDevice.Build[TDevice] (System.String layoutName, System.String layoutVariants, UnityEngine.InputSystem.Layouts.InputDeviceDescription deviceDescription, System.Boolean noPrecompiledLayouts) [0x00087] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 at UnityEngine.InputSystem.InputManager.AddDevice (UnityEngine.InputSystem.Utilities.InternedString layout, System.Int32 deviceId, System.String deviceName, UnityEngine.InputSystem.Layouts.InputDeviceDescription deviceDescription, UnityEngine.InputSystem.InputDevice+DeviceFlags deviceFlags, UnityEngine.InputSystem.Utilities.InternedString variants) [0x0001a] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 at UnityEngine.InputSystem.InputManager.AddDevice (UnityEngine.InputSystem.Layouts.InputDeviceDescription description, System.Boolean throwIfNoLayoutFound, System.String deviceName, System.Int32 deviceId, UnityEngine.InputSystem.InputDevice+DeviceFlags deviceFlags) [0x0004e] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 at UnityEngine.InputSystem.InputManager.OnNativeDeviceDiscovered (System.Int32 deviceId, System.String deviceDescriptor) [0x000c4] in <4f063e5cb7c846f0a3a1f3b7e686b2a8>:0 ) double free or corruption (out) Caught fatal signal - signo:6 code:-6 errno:0 addr:0x3e800000d74 Obtained 34 stack frames. #0 0x007f1a1783e540 in __sigaction #1 0x007f1a1789894c in pthread_key_delete #2 0x007f1a1783e410 in gsignal #3 0x007f1a1782557a in abort #4 0x007f1a17826613 in perror #5 0x007f1a178a2d75 in timer_settime #6 0x007f1a178a4dc0 in __default_morecore #7 0x007f1a178a4fd1 in default_morecore #8 0x007f1a101dc018 in (Unknown) #9 0x007f1a101dc0b2 in (Unknown) #10 0x007f1a101e49fd in (Unknown) #11 0x007f1a101f0735 in udev_device_unref #12 0x000000406e8853 in (wrapper managed-to-native) object:wrapper_native_0x7f1a101f0710 (intptr) #13 0x00000040acaa73 in HIDrogen.Imports.Linux.Udev:device_unref (intptr) #14 0x00000040aca9ff in HIDrogen.Imports.Linux.udev_device:ReleaseHandle () #15 0x000000405ed541 in System.Runtime.InteropServices.SafeHandle:DangerousReleaseInternal (bool) #16 0x0000004070b667 in System.Runtime.InteropServices.SafeHandle:InternalDispose () #17 0x0000004070b603 in System.Runtime.InteropServices.SafeHandle:Dispose (bool) #18 0x0000004070b5d5 in System.Runtime.InteropServices.SafeHandle:Dispose () #19 0x00000040ac9bf2 in HIDrogen.Backend.HidApiBackend:PlatformGetVersionNumber (string,uint16&,bool&) #20 0x00000040ac960f in HIDrogen.Backend.HidApiBackend:PlatformGetVersionNumber (string,uint16&) #21 0x000000406f05b7 in HIDrogen.Backend.HidApiBackend:MakeDeviceDescription (HIDrogen.Imports.hid_device_info&,UnityEngine.InputSystem.Layouts.InputDeviceDescription&,UnityEngine.InputSystem.HID.HID/HIDDeviceDescriptor&,int&) #22 0x000000406eb573 in HIDrogen.Backend.HidApiBackend:EnumerateDevices () #23 0x000000407f690f in HIDrogen.Backend.HidApiBackend:PlatformMonitor (bool&) #24 0x000000407f659f in HIDrogen.Backend.HidApiBackend:PlatformMonitor () #25 0x000000406ead97 in HIDrogen.Backend.HidApiBackend:DeviceDiscoveryThread () #26 0x000000406447e3 in System.Threading.ThreadHelper:ThreadStart_Context (object) #27 0x00000040644092 in System.Threading.ExecutionContext:RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) #28 0x00000040643b93 in System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) #29 0x000000406439df in System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object) #30 0x000000406433a3 in System.Threading.ThreadHelper:ThreadStart () #31 0x0000004064332b in (wrapper runtime-invoke) object:runtime_invoke_void__this (object,intptr,intptr,intptr)

As HID

double free or corruption (out) Caught fatal signal - signo:6 code:-6 errno:0 addr:0x3e8000027dd Obtained 34 stack frames. #0 0x007efcaf43e540 in __sigaction #1 0x007efcaf49894c in pthread_key_delete #2 0x007efcaf43e410 in gsignal #3 0x007efcaf42557a in abort #4 0x007efcaf426613 in perror #5 0x007efcaf4a2d75 in timer_settime #6 0x007efcaf4a4dc0 in __default_morecore #7 0x007efcaf4a4fd1 in default_morecore #8 0x007efca6f47989 in udev_enumerate_scan_devices #9 0x007efca6f47a39 in udev_enumerate_scan_devices #10 0x007efca6f487ba in udev_enumerate_scan_devices #11 0x007efca6f2c68d in udev_device_unref #12 0x00000041222d63 in (wrapper managed-to-native) object:wrapper_native_0x7efca6f2c640 (intptr) #13 0x00000041555fb3 in HIDrogen.Imports.Linux.Udev:device_unref (intptr) #14 0x00000041555f3f in HIDrogen.Imports.Linux.udev_device:ReleaseHandle () #15 0x000000410fd541 in System.Runtime.InteropServices.SafeHandle:DangerousReleaseInternal (bool) #16 0x00000041231477 in System.Runtime.InteropServices.SafeHandle:InternalDispose () #17 0x00000041231413 in System.Runtime.InteropServices.SafeHandle:Dispose (bool) #18 0x00000041231375 in System.Runtime.InteropServices.SafeHandle:Dispose () #19 0x00000041554072 in HIDrogen.Backend.HidApiBackend:PlatformGetVersionNumber (string,uint16&,bool&) #20 0x0000004155399f in HIDrogen.Backend.HidApiBackend:PlatformGetVersionNumber (string,uint16&) #21 0x0000004122c3f7 in HIDrogen.Backend.HidApiBackend:MakeDeviceDescription (HIDrogen.Imports.hid_device_info&,UnityEngine.InputSystem.Layouts.InputDeviceDescription&,UnityEngine.InputSystem.HID.HID/HIDDeviceDescriptor&,int&) #22 0x00000041225723 in HIDrogen.Backend.HidApiBackend:EnumerateDevices () #23 0x0000004131a0af in HIDrogen.Backend.HidApiBackend:PlatformMonitor (bool&) #24 0x00000041319d3f in HIDrogen.Backend.HidApiBackend:PlatformMonitor () #25 0x00000041225297 in HIDrogen.Backend.HidApiBackend:DeviceDiscoveryThread () #26 0x00000041154463 in System.Threading.ThreadHelper:ThreadStart_Context (object) #27 0x00000041153ed2 in System.Threading.ExecutionContext:RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) #28 0x00000041153a73 in System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) #29 0x0000004115399f in System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object) #30 0x000000411533a3 in System.Threading.ThreadHelper:ThreadStart () #31 0x0000004115332b in (wrapper runtime-invoke) object:runtime_invoke_void__this (object,intptr,intptr,intptr)

Cheers

As a sidenote, on Linux it's always hid, santroller never uses xinput for linux

sanjay900 avatar Aug 15 '25 06:08 sanjay900

I know thenathannator isn't ready to merge that PR until he understands what the underlying issue is, but FWIW: I built YARG against it and it plays great with my Santroller-modded Jaguar.

arodland avatar Aug 25 '25 00:08 arodland

Same issue with Jaguar RB4 on Bazzite

ErieSinger avatar Sep 20 '25 15:09 ErieSinger

The same is happening here! Wii remote through Bluetooth on Debian 12

Same here. Wii remote connected via Bluetooth will crash YARG on startup after the initial startup screen. I'm on the Steam Deck using the latest stable YARG release (v0.13.0). Disconnecting the Wii remote in Bluetooth settings will allow YARG to startup and be played normally.

As an alternative, I tried YARG 0.13.0 Windows portable version on my Steam Deck using Proton Experimental and it does NOT crash when having my Wii remote connected via Bluetooth. I'm able to bind the Wii guitar controller buttons and play properly using this method. Steam Input is also disabled in the Steam game properties. Unfortunately, using the Proton version causes issues connecting other instruments (e.g. USB drum set, etc.) as everything is detected as an Xbox Controller.

edisleado avatar Sep 29 '25 02:09 edisleado

Can confirm that the windows portable version works, however with my PolyBar controller (Santroller), the tilt sensor isn't recognised, so star power is... difficult to activate with the select button.

oxhey avatar Oct 06 '25 10:10 oxhey

Has there been any progress towards a fix?

oxhey avatar Nov 04 '25 19:11 oxhey