http://bugs.winehq.com/show_bug.cgi?id=1862
Summary: vertex shader crash(?) Product: Wine Version: CVS Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: wine-directx AssignedTo: wine-bugs@winehq.com ReportedBy: peorth@artificial.ath.cx
When trying to initially run the game "X2: The Threat", after the GUI loads, and you click start to enter the game, while loading, the wine code checks for vertex shader "stuff" but returns a non-zero value on the verification, and then crashes almost immediately. I'm on a Pentium 3 600Mhz, running a binary from a Wine CVS binary (compiled with RedHat 9.1) on Gentoo 1.4 up-to-date, with a Geforce 4 Ti4200, though the binary itself isn't using the "OpenGL version", would that make a difference?
The trace is as follows: 0009:Call advapi32.RegOpenKeyA(80000002,004f1fcc "SOFTWARE\Microsoft\Direct3D",4089f750) ret=004b3ea5 0009:Call kernel32.GetVersion() ret=40a758bd 0009:Ret kernel32.GetVersion() retval=0a280105 ret=40a758bd 0009:Call ntdll.RtlInitAnsiString(4089f5ec,004f1fcc "SOFTWARE\Microsoft\Direct3D") ret=40a75925 0009:Ret ntdll.RtlInitAnsiString() retval=0000001c ret=40a75925 0009:Call ntdll.RtlAnsiStringToUnicodeString(40327bf8,4089f5ec,00000000) ret=40a7592e 0009:Ret ntdll.RtlAnsiStringToUnicodeString() retval=00000000 ret=40a7592e 0009:Call ntdll.NtOpenKey(4089f750,000f003f,4089f5f4) ret=40a75953 0009:Ret ntdll.NtOpenKey() retval=c0000034 ret=40a75953 0009:Call ntdll.RtlNtStatusToDosError(c0000034) ret=40a75938 0009:Ret ntdll.RtlNtStatusToDosError() retval=00000002 ret=40a75938 0009:Ret advapi32.RegOpenKeyA() retval=00000002 ret=004b3ea5 0009:Call kernel32.GetModuleHandleA(004f1fa0 "d3d8.dll") ret=004b3f17 0009:Ret kernel32.GetModuleHandleA() retval=40b10000 ret=004b3f17 0009:Call kernel32.GetProcAddress(40b10000,004f1f74 "ValidateVertexShader") ret=004b3f7f 0009:Ret kernel32.GetProcAddress() retval=40b590a8 ret=004b3f7f 0009:Call d3d8.ValidateVertexShader(4632efb8,00000000) ret=004b3f99 0009:Ret d3d8.ValidateVertexShader() retval=00000001 ret=004b3f99 0009:Call ntdll.RtlFreeHeap(45840000,00000000,4632edf0) ret=004dda5b 0009:Ret ntdll.RtlFreeHeap() retval=00000001 ret=004dda5b 0009:Call ntdll.RtlFreeHeap(45840000,00000000,4632eb20) ret=004dda5b 0009:Ret ntdll.RtlFreeHeap() retval=00000001 ret=004dda5b 0009:Call ntdll.RtlFreeHeap(45840000,00000000,4632eda8) ret=004dda5b 0009:Ret ntdll.RtlFreeHeap() retval=00000001 ret=004dda5b 0009:Call ntdll.RtlFreeHeap(45840000,00000000,4632ead8) ret=004dda5b 0009:Ret ntdll.RtlFreeHeap() retval=00000001 ret=004dda5b 0009:Call ntdll.RtlFreeHeap(45840000,00000000,4632ebd0) ret=004dda5b 0009:Ret ntdll.RtlFreeHeap() retval=00000001 ret=004dda5b 0009:Call ntdll.RtlFreeHeap(45840000,00000000,4632eb68) ret=004dda5b 0009:Ret ntdll.RtlFreeHeap() retval=00000001 ret=004dda5b 0009:Call ntdll.RtlFreeHeap(45840000,00000000,4632e988) ret=004dda5b 0009:Ret ntdll.RtlFreeHeap() retval=00000001 ret=004dda5b 0009:Call kernel32.VirtualQuery(004f5b38,4089f774,0000001c) ret=004eaf92 0009:Ret kernel32.VirtualQuery() retval=0000001c ret=004eaf92 0009:Call kernel32.InterlockedExchange(0051caa0,00000001) ret=004eb010 0009:Ret kernel32.InterlockedExchange() retval=00000000 ret=004eb010 0009:Call kernel32.InterlockedExchange(0051caa0,00000000) ret=004eb075 0009:Ret kernel32.InterlockedExchange() retval=00000001 ret=004eb075 0009:Call kernel32.UnhandledExceptionFilter(4089f7b0) ret=004e63a2 0009:Call kernel32.IsBadCodePtr(100805a0) ret=004ec902 0009:Ret kernel32.IsBadCodePtr() retval=00000000 ret=004ec902 wine: Unhandled exception (thread 0009), starting debugger...
Unhandled exception: page fault on read access to 0x0000012b in 32-bit code (0x00440459). In 32-bit mode. 0x00440459 (X2.exe..text+0x3f459 in X2.exe): call *0x12c(%edi)
Wine-dbg>disassemble 0x00440459-1 0x00440458 (X2.exe..text+0x3f458 in X2.exe): pushl %ebx 0x00440459 (X2.exe..text+0x3f459 in X2.exe): call *0x12c(%edi) 0x0044045f (X2.exe..text+0x3f45f in X2.exe): movl 0x0(%esi),%ecx 0x00440461 (X2.exe..text+0x3f461 in X2.exe): pushl %esi 0x00440462 (X2.exe..text+0x3f462 in X2.exe): call *0x8(%ecx) 0x00440465 (X2.exe..text+0x3f465 in X2.exe): movl $0x4fe6a8,%edi 0x0044046a (X2.exe..text+0x3f46a in X2.exe): call 0x00440800 (X2.exe.. text+0x3f800 in X2.exe) 0x0044046f (X2.exe..text+0x3f46f in X2.exe): movl %eax,%esi 0x00440471 (X2.exe..text+0x3f471 in X2.exe): cmpl %ebp,%esi 0x00440473 (X2.exe..text+0x3f473 in X2.exe): jz 0x004404b1 (X2.exe..text+0x3f4b1 in X2.exe)