[Bug 46142] Games launched through Windows Steam no longer launch.
wine-bugs at winehq.org
wine-bugs at winehq.org
Fri Nov 16 18:41:34 CST 2018
https://bugs.winehq.org/show_bug.cgi?id=46142
Kimmo Myllyvirta <kimmo.myllyvirta at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kimmo.myllyvirta at gmail.com
--- Comment #12 from Kimmo Myllyvirta <kimmo.myllyvirta at gmail.com> ---
Created attachment 62801
--> https://bugs.winehq.org/attachment.cgi?id=62801
fix for xinput1_3
Did some debugging;
<repeats thousands of times>
009e:009f:trace:xinput:XInputGetState (index 0, state 0x1434d0)!
009e:009f:trace:xinput:XInputGetState (index 0, state 0x143350)!
009e:009f:trace:xinput:XInputGetState (index 0, state 0x1431d0)!
009e:009f:trace:xinput:XInputGetState (index 0, state 0x143050)!
009e:009f:trace:xinput:XInputGetState (index 0, state 0x142ed0)!
009e:009f:trace:xinput:XInputGetState (index 0, state 0x142d50)!
009e:009f:trace:xinput:XInputGetState (index 0, state 0x142bd0)!
009e:009f:err:seh:setup_exception stack overflow 1728 bytes in thread 009f eip
00007fcaf508e5ea esp 0000000000140f50 stack 0x140000-0x141000-0x2140000
Notice that XInputGetState calls XInputGetStateEx unconditionally, but its
trace is missing. XInputGetStateEx is hooked, and the hook eventually calls
XInputGetState -> infinite recursion.
For example, with Witcher 3;
Stopped on breakpoint 1 at 0x00007efc917d0929 XInputGetState+0x82
[/home/des/projects/wine-git-staging/dlls/xinput1_3/xinput_main.c:94] in
xinput1_3
94 ret = XInputGetStateEx(index, state);
0x00007efc917d073a XInputGetStateEx in xinput1_3: jmp 0x00007efc8ed6070d
0x00007efc8ed6070d: jmpl *(%rip) -> gameoverlayrenderer64
0x000000000299cb10: movq %rdx,%r8
....
0x000000000299b8d7: calll *%r8d
00da:fixme:winedbg:be_x86_64_is_func_call Unsupported yet call insn (rex=0x01
0xFF 0xd0) at 0x299b8d8
0x00007efc8ed606c0: leaq (%rsp),%rsp
0x00007efc8ed606c8: jmp 0x00007efc917d08a7 XInputGetState -> and here we go
again
0x00007efc917d08a7 XInputGetState
[/home/des/projects/wine-git-staging/dlls/xinput1_3/xinput_main.c:89] in
xinput1_3: pushq %rbp
...
So, XInputGetState must not call XInputGetStateEx. Here's a quick fix, tested
with Witcher 3 and Sprintires Mudrunner.
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list