http://bugs.winehq.org/show_bug.cgi?id=27680
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|64 bit Aion client crashes |64 bit Aion client crashes |on load |on load (violation of the | |Windows 64-bit ABI, stack | |pointer (RSP) must be | |16-byte aligned when making | |a call to Win64 API)
--- Comment #5 from Anastasius Focht focht@gmx.net 2012-04-02 16:31:40 CDT --- Hello,
Alexandre is right ...
On Windows this app probably gets away because there are no MMX/SSE instructions in native API code path which might cause alignment fault. The native API will most likely end very quickly in syscall without any additional validation/copying overhead.
I made some tests, manually fixing the API calls when required using per-API suppression of MMX/SSE instruction generation (__attribute__ ((__target__ ("no-mmx"))) __attribute__ ((__target__ ("no-sse")))) and for all called sub-functions -> debug trace) and it seems the app calls more Win64 API with misaligned stack pointer ... :|
Disabling generation of SIMD instructions won't help in some situations: any page fault due to invalid parameters will blow the thing up too because the x64 exception handling also depends on 16-byte alignment constraint.
My guess: the obfuscator messed their code up, causing the misalignment.
If Alexandre has no objections we can use this bug as collector for apps that violate the ABI for Windows x64 (misaligned stack pointer) but mark it WONTFIX?
Regards