http://bugs.winehq.org/show_bug.cgi?id=14822
--- Comment #16 from Anastasius Focht focht@gmx.net 2008-09-21 16:15:19 --- Hello,
--- snip trace log --- .. 003d:Ret KERNEL32.InitializeCriticalSection() retval=00000001 ret=00648f29 003d:trace:seh:raise_exception code=c0000005 flags=0 addr=0x55cf5c 003d:trace:seh:raise_exception info[0]=00000000 003d:trace:seh:raise_exception info[1]=ffffffff 003d:trace:seh:raise_exception eax=01ec5cd8 ebx=0032fc3c ecx=01ec5cd8 edx=ffffffff esi=01ec5ca8 edi=01ec5cd8 003d:trace:seh:raise_exception ebp=0032fc30 esp=0032fc10 cs=0073 ds=007b es=007b fs=0033 gs=003b flags=00210286 003d:trace:seh:call_stack_handlers calling handler at 0x9358f8 code=c0000005 flags=0 --- snip trace log ---
The crash is due to "movaps" SSE instruction which of course bails if it encounters non 128-bit (16 byte) aligned memory in either source or destination operand referring to a memory location.
--- snip app code --- .. 0055CF5A 8BC1 mov eax, ecx 0055CF5C 0F2980 90000000 movaps dqword ptr ds:[eax+90], xmm0 --- snip app code ---
The allocation itself actually turned out to be a huge memory chunk, allocated early at startup. Various program code offsets data areas from this chunk later.
--- snip --- .. 003d:Ret setupapi.SetupDiDestroyDeviceInfoList() retval=00000001 ret=0073ac9a 003d:Call KERNEL32.GetLastError() ret=0073aca0 003d:Ret KERNEL32.GetLastError() retval=00000103 ret=0073aca0 .. 003d:Call ntdll.RtlAllocateHeap(01da0000,00000000,067fb640) ret=0079f040 003d:Ret ntdll.RtlAllocateHeap() retval=01eb0028 ret=0079f040 --- snip ---
Changing ntdll's default heap block alignment from 8 to 16 bytes boundary and fixing in-use arena (by adding dummy list entry to struct or fixing offset calc) to avoid unaligned arena pointers makes this app successfully load. This fix might be useful for other apps which use SSE instructions and "mysteriously" crash.
---
Another Traktor application called "Service Center" used for activation and updates also suffers from a bug (wininet). If you file the service center bug separately, you get the solution too ;-)
Regards