protonscr

winebth.sys: Bug in winebth.sys + dbus crashing input handling

wineclosed
ValveSoftware/wine#315 · opened 2026-02-28 by JacKeTUs · updated 2026-04-16 · 1 comments · github
JJacKeTUs 2026-02-28 github

Hello!
I started getting seemingly random device disconnects in games / in wine control joy.cpl - for 10-20 seconds it's working perfectly fine and after some time input is not registering and new devices are not appearing.

From logs i found this:

PROTON_LOG=1 WINEDEBUG="+dbus" protontrics -c "wine control joy.cpl" 1066890

00e4:trace:dbus:bluez_filter ({0x7f248014baf0 connected=1}, {signal sender=":1.5" interface="org.freedesktop.DBus.Properties" member="PropertiesChanged" path="/org/bluez/hci0" signature="sa{sv}as"}, 0x7f248007ccb0)
00e4:trace:dbus:bluez_radio_prop_from_dict_entry ("Discovering", 0x100ffe490, 0x100ffe4e8, 0x100ffe4e0, 0x3fd)
dbus[58589]: arguments to dbus_pending_call_set_notify() were incorrect, assertion "pending != NULL" failed in file ../../../dbus/dbus-pending-call.c line 655.
This is normally a bug in some application using the D-Bus library.
  D-Bus not built with -rdynamic so unable to print a backtrace
00e4:err:seh:call_seh_handlers invalid frame 0000000100FFDF60 (00000000026E2000-00000000028E0000)
00e4:err:seh:NtRaiseException Exception frame is not in stack limits => unable to dispatch exception.

And after that log i identified that my 'random' disconnects / stops of input handling are tied to bluez discovery interval. Disabling bluez lead to perfectly fine session in games / long enough staring at joy.cpl screen, but some games (simracing titles) are easier to play with wireless keyboard on the side, so it's not exactly ideal solution...

sudo dbus-monitor --system "path='/org/bluez/hci0'"

signal time=1772316172.954428 sender=:1.5 -> destination=(null destination) serial=1851 path=/org/bluez/hci0; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "org.bluez.Adapter1"
   array [
      dict entry(
         string "Discovering"
         variant             boolean false
      )
   ]
   array [
   ]
...
method call time=1772316192.825234 sender=:1.66 -> destination=org.bluez serial=1940 path=/org/bluez/hci0; interface=org.bluez.Adapter1; member=StartDiscovery
signal time=1772316192.940475 sender=:1.5 -> destination=(null destination) serial=1858 path=/org/bluez/hci0; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "org.bluez.Adapter1"
   array [
      dict entry(
         string "Discovering"
         variant             boolean true
      )
   ]
   array [
   ]

After digging some more, i found that there is a bug present in Proton version of Wine: it tries to notify dbus with NULL pending_call argument, seemingly crashing the input handling (and something else?), and it's fixed in upstream wine (https://gitlab.winehq.org/wine/wine/-/merge_requests/7302). Also there is a bunch of updates in winebth (https://gitlab.winehq.org/wine/wine/-/commits/master/dlls/winebth.sys), for almost a year.

Can you, please, update winebth.sys code, or at least cherry-pick https://gitlab.winehq.org/wine/wine/-/merge_requests/7302/diffs?commit_id=e79bf8390d93efedbc2c99d73450fd24c4877b94, so playing games with controllers with bluetooth enabled will be possible again?

JJacKeTUs 2026-04-16 github

Okay, i believe this commit was added with Proton 11
https://github.com/ValveSoftware/wine/commit/e79bf8390d93efedbc2c99d73450fd24c4877b94

Thanks!

Launch options