http://bugs.winehq.org/show_bug.cgi?id=12242
Summary: PhoenixRC: HID controller does not work Product: Wine Version: 0.9.58. Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: setupapi AssignedTo: wine-bugs@winehq.org ReportedBy: raccoonone@procyongames.com
PhoenixRC comes with an adapter to connect a remote controller via USB. The controller and adapter show up as an HID under windows, but they aren't detected under WINE. I'm working on this bug, and have created this to track progress.
The first thing to fix seems to be a bug in SetupDiGetDeviceInterfaceDetailW which is causing a page fault.
http://bugs.winehq.org/show_bug.cgi?id=12242
--- Comment #1 from Christopher raccoonone@procyongames.com 2008-03-26 23:59:03 --- Created an attachment (id=11681) --> (http://bugs.winehq.org/attachment.cgi?id=11681) Fix for SetupDiGetDeviceInterfaceDetailW
This patch addresses the page fault issue. SetupDiGetDeviceInterfaceDetailW was returning a required size for the buffer that was too small; thereby causing a page fault after a buffer of the "correct" size was allocated.
http://bugs.winehq.org/show_bug.cgi?id=12242
--- Comment #2 from Christopher raccoonone@procyongames.com 2008-03-27 13:01:46 --- Created an attachment (id=11699) --> (http://bugs.winehq.org/attachment.cgi?id=11699) Log after applying previous patch
After applying the patch for SetupDiGetDeviceInterfaceDetailW, there's another page fault which seems to be caused by SetupDiDestroyDeviceInfoList.
http://bugs.winehq.org/show_bug.cgi?id=12242
--- Comment #3 from Christopher raccoonone@procyongames.com 2008-03-28 15:18:06 --- Created an attachment (id=11715) --> (http://bugs.winehq.org/attachment.cgi?id=11715) log of SetupDiDeleteDeviceInterfaceRegKey bad pointers
The page faults are caused by SetupDiDeleteDeviceInterfaceRegKey. For some reason PhoenixRC is passing an invalid pointer. I disabled SetupDiDeleteDeviceInterfaceRegKey by making it always return TRUE (without actually doing anything), so that I could generate this log of all the setupapi calls. As you can see the interface 0x13ef10 is never created, yet PhoenixRC tries to delete it twice and passes 0x3a (also never created) as the HDEVINFO handle. I don't know if this is a bug (feature?) in PhoenixRC, but I'll patch SetupDiDeleteDeviceInterfaceRegKey so that it won't page fault on a bad pointer (Windows does not, it returns FALSE and an error code).
http://bugs.winehq.org/show_bug.cgi?id=12242
--- Comment #4 from Juan Lang juan_lang@yahoo.com 2008-03-30 22:55:13 --- (In reply to comment #3)
As you can see the interface 0x13ef10 is never created, yet PhoenixRC tries to delete it twice and passes 0x3a (also never created) as the HDEVINFO handle. I don't know if this is a bug (feature?) in PhoenixRC, but I'll patch SetupDiDeleteDeviceInterfaceRegKey so that it won't page fault on a bad pointer (Windows does not, it returns FALSE and an error code).
You don't think it's just a bug in setupapi? Notice that SetupDiDestroyDeviceInfoList is called just before these bogus handles are passed to SetupDiDeleteDeviceInterfaceRegKey. The following call path could produce that: SetupDiDestroyDeviceInfoList SETUPDI_FreeDeviceInfo SETUPDI_FreeInterfaceInstances SetupDiDeleteDeviceInterfaceRegKey
You might try Alexander Morozov's patches instead, they seem to address some bogus pointer bug in setupapi.
http://bugs.winehq.org/show_bug.cgi?id=12242
--- Comment #5 from Christopher raccoonone@procyongames.com 2008-03-30 23:25:38 --- (In reply to comment #4)
(In reply to comment #3)
As you can see the interface 0x13ef10 is never created, yet PhoenixRC tries to delete it twice and passes 0x3a (also never created) as the HDEVINFO handle. I don't know if this is a bug (feature?) in PhoenixRC, but I'll patch SetupDiDeleteDeviceInterfaceRegKey so that it won't page fault on a bad pointer (Windows does not, it returns FALSE and an error code).
You don't think it's just a bug in setupapi? Notice that SetupDiDestroyDeviceInfoList is called just before these bogus handles are passed to SetupDiDeleteDeviceInterfaceRegKey. The following call path could produce that: SetupDiDestroyDeviceInfoList SETUPDI_FreeDeviceInfo SETUPDI_FreeInterfaceInstances SetupDiDeleteDeviceInterfaceRegKey
You might try Alexander Morozov's patches instead, they seem to address some bogus pointer bug in setupapi.
Yep, you were right. Alexander's patches fix the page faults. However the HID for Phoenix is still not detected. I copied all of the registry keys for DeviceClasses and Enum from a working Windows install. Any ideas?
http://bugs.winehq.org/show_bug.cgi?id=12242
--- Comment #6 from Christopher raccoonone@procyongames.com 2008-04-05 11:48:06 --- 0.9.59 fixes the page faults. However the controller is still not detected by PhoenixRC
http://bugs.winehq.org/show_bug.cgi?id=12242
--- Comment #7 from Austin English austinenglish@gmail.com 2008-10-17 15:57:16 --- Is this still a problem in current (1.1.6 or newer) wine?
http://bugs.winehq.org/show_bug.cgi?id=12242
--- Comment #8 from Christopher raccoonone@procyongames.com 2008-10-18 22:03:24 --- Yes, I just tested this with 1.1.6 and the issue remains. Let me know if you need any logs or anything
http://bugs.winehq.org/show_bug.cgi?id=12242
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |hardware
http://bugs.winehq.org/show_bug.cgi?id=12242
--- Comment #9 from Austin English austinenglish@gmail.com 2009-04-20 12:28:04 --- Is this still an issue in current (1.1.19 or newer) wine?
http://bugs.winehq.org/show_bug.cgi?id=12242
Joseph Jones the.tuxster@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |the.tuxster@gmail.com
--- Comment #10 from Joseph Jones the.tuxster@gmail.com 2009-04-21 17:59:01 --- Yes this is still an issue (wine 1.1.19)
http://bugs.winehq.org/show_bug.cgi?id=12242
--- Comment #11 from Austin English austinenglish@gmail.com 2009-10-29 15:25:24 --- Is this still an issue in current (1.1.32 or newer) wine?
http://bugs.winehq.org/show_bug.cgi?id=12242
Tomas J. zexx86@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1
--- Comment #12 from Tomas J. zexx86@gmail.com 2010-09-04 12:49:16 CDT --- *** This bug has been confirmed by popular vote. ***
http://bugs.winehq.org/show_bug.cgi?id=12242
butraxz@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |butraxz@gmail.com
--- Comment #13 from butraxz@gmail.com 2012-05-17 15:27:00 CDT --- This bug has not been updated for three years. Is this still an issue i current (1.5.4) or newer wine ? You may also close this as abandoned if you feel that that this is issue is no longer relevant to you.
http://bugs.winehq.org/show_bug.cgi?id=12242
--- Comment #14 from Christopher Berner christopherberner@gmail.com 2012-05-17 15:38:49 CDT --- I haven't tested it in a year or two, but I'd be pretty sure it's still broken. I haven't seen any patches that address USB drivers, and that's what this needs.
https://bugs.winehq.org/show_bug.cgi?id=12242
Ken Sharp imwellcushtymelike@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |Abandoned?
--- Comment #15 from Ken Sharp imwellcushtymelike@gmail.com --- Is this still an issue in Wine 1.7.45 or later?
Some HID controllers do work.
https://bugs.winehq.org/show_bug.cgi?id=12242
--- Comment #16 from Christopher Berner christopherberner@gmail.com --- Created attachment 51767 --> https://bugs.winehq.org/attachment.cgi?id=51767 Backtrace of crash
I tried with 1.7.46 and it seems that support has regressed, so I wasn't able to get to the step of testing the USB controller. I've attached a crash log, which happens immediately after launching PhoenixRC. Let me know if you need more information
https://bugs.winehq.org/show_bug.cgi?id=12242
Ken Sharp imwellcushtymelike@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords|Abandoned? |
--- Comment #17 from Ken Sharp imwellcushtymelike@gmail.com --- Please retry in Wine 3.9 or later.
If something regressed then a regression test would have helped resolve that. If the result is the same it still will and a new bug report for the regression should be logged.
https://bugs.winehq.org/show_bug.cgi?id=12242
tokktokk fdsfgs@krutt.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |fdsfgs@krutt.org