[Bug 37213] 64-bit EEP-X / EEP 10 Eisenbahn.exe (train simulator) crashes on startup (violation of the Windows 64-bit ABI, stack pointer (RSP) must be 16-byte aligned when making a call to Win64 API)

wine-bugs at winehq.org wine-bugs at winehq.org
Mon Sep 1 04:06:19 CDT 2014


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |win64
             Status|UNCONFIRMED                 |RESOLVED
                 CC|                            |focht at gmx.net
         Resolution|---                         |DUPLICATE
            Summary|[EEP10] Crashing at program |64-bit EEP-X / EEP 10
                   |start                       |Eisenbahn.exe (train
                   |                            |simulator) crashes on
                   |                            |startup (violation of the
                   |                            |Windows 64-bit ABI, stack
                   |                            |pointer (RSP) must be
                   |                            |16-byte aligned when making
                   |                            |a call to Win64 API)

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

the 64-bit app is broken, dupe of bug 27680

Even without trace log or app disassembly it's pretty obvious to me.

Disassembly of 64-bit Wine 'GetSystemDirectoryA' entry on my system:

--- snip ---
$ wine64 winedbg --gdb notepad

0022:0023: create process 'C:\windows\system32\notepad.exe'/0x10980
@0x7f9bc46635ec (0<0>)
...
0022:0023: loads DLL C:\windows\system32\KERNEL32.dll @0x7b820000 (0<0>)
0022:0023: loads DLL C:\windows\system32\ntdll.dll @0x7f9bcafe0000 (0<0>)
0022:0023: loads DLL C:\windows\system32\advapi32.dll @0x7f9bc3260000 (0<0>)
0022:0023: loads DLL C:\windows\system32\gdi32.dll @0x7f9bc34f0000 (0<0>)
0022:0023: loads DLL C:\windows\system32\version.dll @0x7f9bc3040000 (0<0>)
0022:0023: loads DLL C:\windows\system32\user32.dll @0x7f9bc3880000 (0<0>)
0022:0023: loads DLL C:\windows\system32\shlwapi.dll @0x7f9bc3c40000 (0<0>)
0022:0023: loads DLL C:\windows\system32\shell32.dll @0x7f9bc3ee0000 (0<0>)
0022:0023: loads DLL C:\windows\system32\comctl32.dll @0x7f9bc2d10000 (0<0>)
0022:0023: loads DLL C:\windows\system32\winspool.drv @0x7f9bc2ac0000 (0<0>)
0022:0023: loads DLL C:\windows\system32\comdlg32.dll @0x7f9bc4350000 (0<0>)
0022:0023: loads DLL C:\windows\system32\msvcrt.dll @0x7f9bc2800000 (0<0>)
0022:0023: loads DLL C:\windows\system32\winex11.drv @0x7f9bc2500000 (0<0>)
0022:0023: loads DLL C:\windows\system32\uxtheme.dll @0x7f9bc22b0000 (0<0>)
00000022:00000023: exception code=0x80000003
0x00007f9bcb06bc15 in DbgBreakPoint () at
/home/focht/projects/wine/wine.repo/src/dlls/ntdll/signal_x86_64.c:3416
3416    }
trace: 98 => 80
...
Wine-gdb> disas GetSystemDirectoryA
Dump of assembler code for function GetSystemDirectoryA:
   0x000000007b879994 <+0>:    push   %rbp
   0x000000007b879995 <+1>:    mov    %rsp,%rbp
   0x000000007b879998 <+4>:    push   %rdi
   0x000000007b879999 <+5>:    push   %rsi
   0x000000007b87999a <+6>:    sub    $0xa0,%rsp
   0x000000007b8799a1 <+13>:    movaps %xmm6,(%rsp) ; must be 16-byte aligned
   0x000000007b8799a5 <+17>:    movaps %xmm7,0x10(%rsp)
   0x000000007b8799aa <+22>:    movaps %xmm8,0x20(%rsp)
   0x000000007b8799b0 <+28>:    movaps %xmm9,-0x80(%rbp)
   0x000000007b8799b5 <+33>:    movaps %xmm10,-0x70(%rbp)
   0x000000007b8799ba <+38>:    movaps %xmm11,-0x60(%rbp)
   0x000000007b8799bf <+43>:    movaps %xmm12,-0x50(%rbp)
   0x000000007b8799c4 <+48>:    movaps %xmm13,-0x40(%rbp)
   0x000000007b8799c9 <+53>:    movaps %xmm14,-0x30(%rbp)
   0x000000007b8799ce <+58>:    movaps %xmm15,-0x20(%rbp)
   0x000000007b8799d3 <+63>:    mov    %rcx,0x10(%rbp)
   0x000000007b8799d7 <+67>:    mov    %edx,0x18(%rbp)
   0x000000007b8799da <+70>:    mov    0x40c947(%rip),%rax  # <DIR_System>
   0x000000007b8799e1 <+77>:    mov    0x18(%rbp),%edx
   0x000000007b8799e4 <+80>:    mov    0x10(%rbp),%rsi
   0x000000007b8799e8 <+84>:    mov    %rax,%rdi
   0x000000007b8799eb <+87>:    callq  0x7b8741b3 <copy_filename_WtoA>
--- snip ---

RSP from your backtrace fault context = 0x51fc68 -> not 16-byte aligned for SSE
instructions.

Calculating the original RSP backwards up to caller:

0x51fc68 + 0xA0 (buffer) + 8 (rsi) + 8 (rdi) + 8 (rbp) + 8 (rip, ret_addr) =
0x51fd28

At time of performing the call instruction the stack has to be 16-byte aligned!

Regards

*** This bug has been marked as a duplicate of bug 27680 ***

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