[Bug 36820] RIFT crashes on startup

wine-bugs at winehq.org wine-bugs at winehq.org
Mon Jun 30 10:34:25 CDT 2014


https://bugs.winehq.org/show_bug.cgi?id=36820

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |download
             Status|UNCONFIRMED                 |NEW
                URL|                            |http://download.riftgame.co
                   |                            |m/rift-installer.exe
                 CC|                            |focht at gmx.net
            Version|unspecified                 |1.7.18
            Summary|rift does not run           |RIFT crashes on startup
     Ever confirmed|0                           |1

--- Comment #1 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

confirming.

Two problems:

--- snip ---
...
err:d3dcompiler:compile_shader HLSL shader parsing failed.
err:d3dcompiler:compile_shader HLSL shader parsing failed.
fixme:d3dcompiler:make_assignment Check for casts in the lhs.
fixme:d3dcompiler:make_assignment Check for casts in the lhs.
fixme:hlsl_parser:hlsl_parse Check for valued return on void function.
fixme:hlsl_parser:hlsl_parse Implicit conversion to the return type if needed,
error out if conversion not possible.
err:d3dcompiler:compile_shader HLSL shader parsing failed.
fixme:win:EnumDisplayDevicesW ((null),0,0x33ebc0,0x00000000), stub!
fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
...
--- snip ---

-> 'winetricks -q d3dcompiler_43'

--- snip ---
...
0036:trace:d3dx:D3DXCompileShader data "#line 2
\"(null)\\NiStandardMaterial\\01000000-00000000-12000000-00000000-V.hlsl\"\n/*\nShader
description:\nTRANSFORM = 0\nOUTPUTWORLDPOS = 0\nOUTPUTWORLDNBT =
0\nOUTPUTWORLDVIEW = 0\nOUTPUTTANGENTVIEW = 0\nNORMAL = 0\nSPECULAR =
0\nFOGTYPE = 0\nENVMAPTYPE = 0\nPROJLIGHTMAPCOUNT = 0\nPROJLIGHTMAPTYP"...,
length 3436, defines (nil), include (nil), function "Main", profile "vs_3_0",
flags 0, shader 0x33f7d8, error_msgs (nil), constant_table 0x33f7f8. 
...
0036:trace:d3dx:D3DXGetShaderConstantTable (0x28e1608, 0x33f7f8): Forwarded to
D3DXGetShaderConstantTableEx
0036:trace:d3dx:D3DXGetShaderConstantTableEx byte_code 0x28e1608, flags 0,
constant_table 0x33f7f8
0036:trace:d3dx:D3DXFindShaderComment byte_code 0x28e1608, fourcc 42415443,
data 0x33f604, size 0x33f600
0036:trace:d3dx:D3DXFindShaderComment Returning comment data at 0x28e1614 with
size 160
0036:trace:d3dx:D3DXGetShaderConstantTableEx Creator "Microsoft (R) HLSL Shader
Compiler 9.29.952.3111", Version fffe0300, Constants 2, Target "vs_3_0"
0036:trace:d3dx:parse_ctab_constant_type name g_ViewProj, elements 1, index 4,
defaultvalue (nil), regset D3DXRS_FLOAT4
0036:trace:d3dx:parse_ctab_constant_type class D3DXPC_MATRIX_COLUMNS, type
D3DXPT_FLOAT, rows 4, columns 4, elements 1, struct_members 0
0036:trace:d3dx:parse_ctab_constant_type name g_World, elements 1, index 0,
defaultvalue (nil), regset D3DXRS_FLOAT4
0036:trace:d3dx:parse_ctab_constant_type class D3DXPC_MATRIX_COLUMNS, type
D3DXPT_FLOAT, rows 4, columns 4, elements 1, struct_members 0 
...
0036:trace:d3dx:ID3DXEffectImpl_GetPass iface 0x74c1a50, technique 0x74c994c,
index 0.
0036:trace:d3dx:d3dx9_base_effect_get_pass Returning pass 0x74cb528
0036:trace:d3dx:ID3DXEffectImpl_GetPassDesc iface 0x74c1a50, pass 0x74cb528,
desc 0x33f9d0.
0036:fixme:d3dx:d3dx9_base_effect_get_pass_desc Pixel shader and vertex shader
are not supported, yet.
0036:trace:d3dx:D3DXGetShaderConstantTableEx byte_code (nil), flags 20000,
constant_table 0x33f990
0036:warn:d3dx:D3DXGetShaderConstantTableEx Invalid argument specified.
0036:trace:seh:raise_exception code=c0000005 flags=0 addr=0x689cdf ip=00689cdf
tid=0036
0036:trace:seh:raise_exception  info[0]=00000000
0036:trace:seh:raise_exception  info[1]=00000000
0036:trace:seh:raise_exception  eax=00000000 ebx=074c1a50 ecx=0033f968
edx=7bcecbc8 esi=00149fa8 edi=00000000
0036:trace:seh:raise_exception  ebp=031a0268 esp=0033f974 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00210202
0036:trace:seh:call_stack_handlers calling handler at 0x17c4656 code=c0000005
flags=0
0036:trace:seh:_except_handler4_common exception c0000005 flags=0 at 0x689cdf
handler=0x17c4656 0x33f650 0x33f4dc cookie=60032e70 scope table=0x2187c58
cookies=-2/0,-120/0
0036:trace:seh:_except_handler4_common level 1 prev -2 filter 0x17c4c13
0036:trace:seh:_XcptFilter (c0000005,0x33f3d4)
0036:trace:seh:_except_handler4_common filter returned CONTINUE_SEARCH
0036:trace:seh:_except_handler4_common reached -2, returning
ExceptionContinueSearch
0036:trace:seh:call_stack_handlers handler at 0x17c4656 returned 1
0036:trace:seh:call_stack_handlers calling handler at 0x7bc9eceb code=c0000005
flags=0
wine: Unhandled page fault on read access to 0x00000000 at address 0x689cdf
(thread 0036), starting debugger... 
--- snip ---

-> 'winetricks -q d3dx9_36'

The error handling of the game engine is questionable.

It doesn't even look at HRESULT of 'D3DXGetShaderConstantTableEx' call,
expecting a usable constant table interface.

I could not really deduce where this NULL pointer for function byte-code comes
from.
There is no access to this specific address within the function scope prior (at
least on current scope).
Maybe it's part (member) of some data structure and initialized in some
nested/child scope where only the base pointer is passed.

--- snip ---
...
00689CC7   8B5424 64      MOV EDX,DWORD PTR SS:[ESP+64]  ; NULL ?
00689CCB   8D4C24 1C      LEA ECX,[ESP+1C]
00689CCF   51             PUSH ECX
00689CD0   68 00000200    PUSH 20000
00689CD5   52             PUSH EDX
00689CD6   E8 5D0A1601    CALL d3dx9_36.D3DXGetShaderConstantTableEx
00689CDB   8B4424 1C      MOV EAX,DWORD PTR SS:[ESP+1C]
00689CDF   8B08           MOV ECX,DWORD PTR DS:[EAX]     ; *boom*
00689CE1   8B51 2C        MOV EDX,DWORD PTR DS:[ECX+2C]
00689CE4   56             PUSH ESI
00689CE5   50             PUSH EAX
00689CE6   FFD2           CALL EDX
00689CE8   8B4C24 68      MOV ECX,DWORD PTR SS:[ESP+68]
00689CEC   8D4424 10      LEA EAX,[ESP+10]
00689CF0   50             PUSH EAX
00689CF1   68 00000200    PUSH 20000
00689CF6   51             PUSH ECX
00689CF7   E8 3C0A1601    CALL d3dx9_36.D3DXGetShaderConstantTableEx
00689CFC   8B4424 10      MOV EAX,DWORD PTR SS:[ESP+10]
00689D00   8B10           MOV EDX,DWORD PTR DS:[EAX]
--- snip ---

There is a crash reporting tool that gets automatically attached when the
'rift.exe' process is started (acting as debugger):

--- snip ---
003a:trace:process:create_process_impl app L"C:\\Program Files\\RIFT
Game\\rifterrorhandler.exe" cmdline L" -attach  -pid 57 -section
Trion.Rift.DebugSection-57 -configresourceid 115 -userconfig rift.cfg
-hangevent Trion.Rift.HangDetectionEvent-57 -shutdownevent
Trion.Rift.ShutdownEvent-57"
003a:trace:process:open_exe_file looking for L"C:\\Program Files\\RIFT
Game\\rifterrorhandler.exe"
0037:trace:msvcrt:_lock (31)
003a:warn:process:create_process_impl (L"C:\\Program Files\\RIFT
Game\\rifterrorhandler.exe",...): ignoring some flags in 8000000
0037:trace:msvcrt:_unlock (31)
003a:trace:process:create_process_impl starting L"C:\\Program Files\\RIFT
Game\\rifterrorhandler.exe" as Win32 binary (0x400000-0x71e000, arch 014c)
--- snip ---

Just make the executable inaccessible (chmod 000) to avoid this and enable
'winedbg' as crash handler.

BTW there are various outdated HOWTOs that state: "install DX and VC++ 2008
runtime".
This is _not_ needed and just pollutes the prefix.

$ wine --version
wine-1.7.21

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list