http://bugs.winehq.org/show_bug.cgi?id=8427
------- Additional Comments From focht@gmx.net 2007-18-05 06:24 ------- Hello,
ok, seems another bug (leave the non working kernel mode driver stuff aside)...
The first exception seen in trace is actually a nifty trick to detect if running inside a virtual machine.
--- snip trace --- 000f:trace:seh:raise_exception code=c000001d flags=0 addr=0x4731a9 000f:trace:seh:raise_exception eax=00000001 ebx=00000000 ecx=1d1dce56 edx=0061bd6d esi=0061bd28 edi=00610e20 000f:trace:seh:raise_exception ebp=0034f534 esp=0034f4fc cs=0073 ds=007b es=007b fs=0033 gs=003b flags=00010202 000f:trace:seh:call_stack_handlers calling handler at 0x461400 code=c000001d flags=0 --- snip trace ---
--- snip disasm --- 0047319E . 53 PUSH EBX 0047319F . BB 00000000 MOV EBX,0 004731A4 . B8 01000000 MOV EAX,1 004731A9 0F DB 0F ; causes invalid opcode exception 004731AA 3F DB 3F 004731AB 07 DB 07 004731AC 0B DB 0B 004731AD . 85DB TEST EBX,EBX 004731AF . 0F9445 E7 SETE BYTE PTR SS:[EBP-19] 004731B3 . 5B POP EBX -- snip disasm ---
Basically said, the app sets up SEH (try/catch blocks) and special VM parameters (ebx, eax values) and then executes invalid opcode. When running inside an VM this opcode is gracefully handled, while not running in VM SEH is executed.
The second exception (c0000005) is the real one. Seems there is no API involed regarding this case. The directx issue you are seeing is probably another one, not directly related with this crash.
Looks like it tries to access some class/object member data (vtable -> c++) which is not present (ecx/this). Lots of vtable indirections, indicating some kind of class/object hierarchy. The missing member data could be caused much earlier thats why this thing is hard to track down (speak: blame some API call for it).
Regards