https://bugs.winehq.org/show_bug.cgi?id=51223
Bug ID: 51223 Summary: Wine 6.10 regression, dinput broken in certain situations? Product: Wine Version: 6.10 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: xinput Assignee: wine-bugs@winehq.org Reporter: kle@bluewin.ch Distribution: ---
Hi all
It looks that after updating to Wine 6.10 the dinput related stuff is broken, at least for me. I am no longer able to use my 8BitDo Pro 2 gamepad in Wine in conjunction with the CXBX-R Xbox emulator. There is mentioned at the CLI the following message:
00cc:err:wineusb:event_thread_proc Error handling events: System call interrupted (perhaps due to signal) 00cc:err:wineusb:event_thread_proc Error handling events: System call interrupted (perhaps due to signal)
This worked absolutely fine in Wine devel 6.9 and 6.8.
The mentioned 8BitDo Pro 2 controller is used with xinput mode. However, the CXBX-R emulator uses dinput for the keyboard and mouse. I can set the gamepad also to dinput mode but this shows no effect. The above mentioned error message still always appears.
I tired to install the native dinput8.dll but this helped nothing.
An additional information is welcome! ;-)
https://bugs.winehq.org/show_bug.cgi?id=51223
Rémi Bernon rbernon@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |rbernon@codeweavers.com
--- Comment #1 from Rémi Bernon rbernon@codeweavers.com --- I've refactored dinput quite a bit and it's very possible that I broke something in the process, would you be able to run a bisection to see which commit the regression comes from? (see https://wiki.winehq.org/Regression_Testing)
https://bugs.winehq.org/show_bug.cgi?id=51223
--- Comment #2 from C. Leu kle@bluewin.ch --- Created attachment 70110 --> https://bugs.winehq.org/attachment.cgi?id=70110 backtraceWine610cxbxr
https://bugs.winehq.org/show_bug.cgi?id=51223
--- Comment #3 from C. Leu kle@bluewin.ch --- Hi Rémi Bernon
I am unfortunately in this programming context a total beginner. All that bisection stuff seems for me really really complex. ;-)
But I was able to provoke a new error message "Unhandled page fault" right after the "wineusb" one. Even more, the CXBX-R Xbox emulator crashes right after that. In the attachment you find a backtrace.
00c4:err:wineusb:event_thread_proc Error handling events: System call interrupted (perhaps due to signal) 00c4:err:wineusb:event_thread_proc Error handling events: System call interrupted (perhaps due to signal) wine: Unhandled page fault on read access to 00000000 at address 666C264A (thread 0110), starting debugger...
You are most likely able to reproduce this with any XInput controller. Here you find the latest build (take the VS2019 one): https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/releases/tag/CI-ba9ee5f
You just need the "winetricks -q d3dcompiler_47" argument, the built-in doesn't work. Nothing else is needed to replicate that error.
https://bugs.winehq.org/show_bug.cgi?id=51223
--- Comment #4 from Rémi Bernon rbernon@codeweavers.com --- Indeed, I can reproduce a winedevice crash easily when opening the input configuration window and pressing a few buttons on a gamepad. I'll do a bisection.
For reference, stack trace is: #0 0x000000031df11534 in RingBuffer_AddPointer (ring=0x6b1930) at ../source/dlls/hidclass.sys/buffer.c:204 #1 0x000000031df15340 in pdo_create (device=<optimized out>, irp=0x8f0dd0) at ../source/dlls/hidclass.sys/device.c:695 #2 0x000000031df1558a in driver_create (device=<optimized out>, irp=<optimized out>) at ../source/dlls/hidclass.sys/pnp.c:530 #3 0x00000002279b34f6 in IoCallDriver (device=device@entry=0x25d400, irp=irp@entry=0x8f0dd0) at ../source/dlls/ntoskrnl.exe/ntoskrnl.c:1757 #4 0x00000002279b5266 in dispatch_irp (device=device@entry=0x25d400, irp=irp@entry=0x8f0dd0, context=context@entry=0xe0fa00) at ../source/dlls/ntoskrnl.exe/ntoskrnl.c:500 #5 0x00000002279b5e6b in dispatch_create (context=0xe0fa00) at ../source/dlls/ntoskrnl.exe/ntoskrnl.c:545 #6 0x00000002279b4f22 in wine_ntoskrnl_main_loop (stop_event=<optimized out>) at ../source/dlls/ntoskrnl.exe/ntoskrnl.c:957 #7 0x0000000140001732 in ServiceMain (argc=<optimized out>, argv=<optimized out>) at ../source/programs/winedevice/device.c:143 #8 0x000000032a7052f2 in service_thread (arg=0x226cc0, arg@entry=<error reading variable: value has been optimized out>) at ../source/dlls/sechost/service.c:1605 #9 0x000000007b62c809 in BaseThreadInitThunk (unknown=<optimized out>, entry=<optimized out>, arg=<optimized out>) at ../source/dlls/kernel32/thread.c:61 #10 0x000000007bc56593 in RtlUserThreadStart (entry=0x32a705220 <service_thread>, arg=0x226cc0) at ../source/dlls/ntdll/thread.c:165 #11 0x0000000000000000 in ?? ()
https://bugs.winehq.org/show_bug.cgi?id=51223
--- Comment #5 from Rémi Bernon rbernon@codeweavers.com --- Regression comes from:
commit 1c5e57fc7503fcacd4f95c89c7da774a6090eba1 Author: Rémi Bernon rbernon@codeweavers.com Date: Fri Jun 4 11:30:31 2021 +0200
hidclass.sys: Use msvcrt allocation functions.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
dlls/hidclass.sys/buffer.c | 23 ++++++++++++----------- dlls/hidclass.sys/descriptor.c | 18 +++++++++--------- dlls/hidclass.sys/device.c | 23 ++++++++++++----------- dlls/hidclass.sys/pnp.c | 13 +++++++------ 4 files changed, 40 insertions(+), 37 deletions(-)
https://bugs.winehq.org/show_bug.cgi?id=51223
--- Comment #6 from Rémi Bernon rbernon@codeweavers.com --- Unfortunately I missed some realloc call replacement in that patch, and HeapReAlloc fails when called with a malloc-allocated pointer.
I sent https://source.winehq.org/patches/data/207402 which should fix the issue.
https://bugs.winehq.org/show_bug.cgi?id=51223
--- Comment #7 from C. Leu kle@bluewin.ch --- Wow, this is really GREAT! Many thanks Rémi Bernon for the super fast analysis and the fixing of the underlying problem. :-)
I am looking forward (very pleased) to the next Wine release 6.11.
https://bugs.winehq.org/show_bug.cgi?id=51223
C. Leu kle@bluewin.ch changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|UNCONFIRMED |RESOLVED
--- Comment #8 from C. Leu kle@bluewin.ch --- Just for reference, I am happy to confirm, this bug is resolved in Wine 6.11.
Again many thanks to Rémi Bernon for the super fast handling of this issue!
https://bugs.winehq.org/show_bug.cgi?id=51223
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #9 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 6.12.
https://bugs.winehq.org/show_bug.cgi?id=51223
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Wine 6.10 regression, |8BitDo Pro 2 gamepad |dinput broken in certain |doesn't work with CXBX-R |situations? |Xbox emulator Fixed by SHA1| |06fb03378dcde6e3208c89570a6 | |241f7cf14a1d7 Component|xinput |hid Regression SHA1| |1c5e57fc7503fcacd4f95c89c7d | |a774a6090eba1 Keywords| |regression
https://bugs.winehq.org/show_bug.cgi?id=51223
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |tobias.klausmann@freenet.de
--- Comment #10 from Gijs Vermeulen gijsvrm@gmail.com --- *** Bug 51228 has been marked as a duplicate of this bug. ***