http://bugs.winehq.org/show_bug.cgi?id=22316
Summary: Wine should be built with -mincoming-stack-boundary=2 Product: Wine Version: 1.1.42 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: build-env AssignedTo: wine-bugs@winehq.org ReportedBy: daniel-gl@gmx.net
GCC 4.4 on Linux assumes the Stack is aligned to 16 bytes and thus assumes it can use the movdqa instruction when manipulating 64 bit values on the stack. For x86-32 Windows Microsoft specifies a stack alignment of 4 Bytes.
In my case I had wine compiled with -O3 -march=native and got an "Unhandled page fault on read access to 0xffffffff" with the disassembly showing "movq %mm5,%mm3" as the faulting instruction. Running objdump revealed the instruction was in fact "movdqa %xmm3,-0x88(%ebp)" while ebp % 16 had been 4 since the app entered wine code.
Therefore I propose to compile wine with -mincoming-stack-boundary=2 where it is available.