https://bugs.winehq.org/show_bug.cgi?id=37213
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |win64 Status|UNCONFIRMED |RESOLVED CC| |focht@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@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 ***