[Bug 47077] Brawlhalla (Steam) crashes with Wine 4.6 ( Steam Game Overlay Renderer hook engine can't cope with GOT/ PIC register load code at API entry, needs DECLSPEC_HOTPATCH for setupapi.SetupDiEnumDeviceInfo)

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Apr 27 03:56:15 CDT 2019


https://bugs.winehq.org/show_bug.cgi?id=47077

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Regression: Brawlhalla      |Brawlhalla (Steam) crashes
                   |crashes with latest wine    |with Wine 4.6 (Steam Game
                   |                            |Overlay Renderer hook
                   |                            |engine can't cope with
                   |                            |GOT/PIC register load code
                   |                            |at API entry, needs
                   |                            |DECLSPEC_HOTPATCH for
                   |                            |setupapi.SetupDiEnumDeviceI
                   |                            |nfo)
                 CC|                            |focht at gmx.net
                URL|http://www.brawlhalla.com/p |https://store.steampowered.
                   |lay/                        |com/app/291550/Brawlhalla/
          Component|-unknown                    |setupapi

--- Comment #7 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

confirming. Refining some fields to be less ambiguous and have better Bugzilla
query results.

The game seems to use Adobe AIR but the culprit is Steam Game Overlay Renderer
hooking various APIs, and some of them have GOT/PIC register load code directly
at API entry which is a no-no.

--- snip ---
SetupDiEnumDeviceInfo:

79162040  E9 C5E0EA05      JMP 7F01010A
79162045  05 BBBF0500      ADD EAX,5BFBB
7916204A  8D4C24 04        LEA ECX,DWORD PTR SS:[ESP+4]
7916204E  83E4 F0          AND ESP,FFFFFFF0
79162051  FF71 FC          PUSH DWORD PTR DS:[ECX-4]
79162054  55               PUSH EBP
79162055  89E5             MOV EBP,ESP
79162057  57               PUSH EDI
79162058  56               PUSH ESI
79162059  53               PUSH EBX
7916205A  51               PUSH ECX
7916205B  83EC 18          SUB ESP,18
7916205E  8B11             MOV EDX,DWORD PTR DS:[ECX]
79162060  8B59 04          MOV EBX,DWORD PTR DS:[ECX+4]
79162063  8B71 08          MOV ESI,DWORD PTR DS:[ECX+8]
79162066  F680 141D0100 08 TEST BYTE PTR DS:[EAX+11D14],8 ; *boom*
7916206D  75 61            JNZ SHORT setupapi.791620D0
7916206F  8D42 FF          LEA EAX,DWORD PTR DS:[EDX-1]
79162072  83F8 FD          CMP EAX,-3

...

7F01010A  E9 918B0891      JMP gameover.10098CA0
7F01010F  0000             ADD BYTE PTR DS:[EAX],AL
7F010111  0000             ADD BYTE PTR DS:[EAX],AL
--- snip ---

--- snip ---
Executable modules
Base       Size       Entry      Name       File version      Path

00400000   00027000   00401725   Brawlhal                     C:\Program Files
(x86)\Steam\steamapps\common\Brawlhalla\Brawlhalla.exe
018A0000   0150D000   018F5187   Adobe_AI   19.0.0.213        C:\Program Files
(x86)\Steam\steamapps\common\Brawlhalla\Adobe AIR\Versions\1.0\Adobe AIR.dll
10000000   00164000   100A6D61   gameover   05.03.63.53       C:\Program Files
(x86)\Steam\gameoverlayrenderer.dll
79150000   00085000   79155AA0   setupapi                    
C:\windows\system32\setupapi.dll
7A390000   00112000   7A393D00   opengl32   5.1.2600.2082    
C:\windows\system32\opengl32.dll
...
--- snip ---

--- snip ---
$ gdb
/home/focht/projects/wine/staging-install-4.6-x86_64/lib/wine/setupapi.dll.so
-batch -ex 'disassemble SetupDiEnumDeviceInfo'
Dump of assembler code for function SetupDiEnumDeviceInfo:
   0x00023040 <+0>:    call   0x294b6 <__x86.get_pc_thunk.ax>
   0x00023045 <+5>:    add    $0x5bfbb,%eax
   0x0002304a <+10>:    lea    0x4(%esp),%ecx
   0x0002304e <+14>:    and    $0xfffffff0,%esp
   0x00023051 <+17>:    pushl  -0x4(%ecx)
   0x00023054 <+20>:    push   %ebp
   0x00023055 <+21>:    mov    %esp,%ebp
   0x00023057 <+23>:    push   %edi
   0x00023058 <+24>:    push   %esi
   0x00023059 <+25>:    push   %ebx
   0x0002305a <+26>:    push   %ecx
   0x0002305b <+27>:    sub    $0x18,%esp
   0x0002305e <+30>:    mov    (%ecx),%edx
   0x00023060 <+32>:    mov    0x4(%ecx),%ebx
   0x00023063 <+35>:    mov    0x8(%ecx),%esi
   0x00023066 <+38>:    testb  $0x8,0x11d14(%eax)
   0x0002306d <+45>:    jne    0x230d0 <SetupDiEnumDeviceInfo+144>
   0x0002306f <+47>:    lea    -0x1(%edx),%eax
...
--- snip ---

Regards

-- 
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