[Bug 34393] F.E.A.R. 2: Project Origin demo crashes with builtin 'd3dx9_40.dll' (purist)

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Jul 4 08:21:48 CDT 2014


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
                 CC|                            |focht at gmx.net
            Summary|F.E.A.R. 2: Project Origin  |F.E.A.R. 2: Project Origin
                   |demo crashes at launch      |demo crashes with builtin
                   |without native d3dx9_40     |'d3dx9_40.dll' (purist)
     Ever confirmed|0                           |1

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

this is more a 'purist' type bug.

It works out of the box after installation in clean 32-bit WINEPREFIX.

The game distributes and installs the necessary DirectX components on its own.

Maybe the vendor updated the demo installer at one point or you were running a
broken Wine/WINEPREFIX.
Manual setup of XAudio2 components and 'd3dx9_40' is clearly not needed here.

Mappings when loaded:

--- snip ---
Wine-dbg>info share
Module    Address            Debug info    Name (114 modules)
PE      240000-  247000    Deferred        x3daudio1_5
PE      400000- 181e000    Export          fear2spdemo
PE    10000000-1044a000    Deferred        d3dx9_40
PE    18000000-18033000    Deferred        binkw32
ELF    4e99a000-4e9a3000    Deferred        librt.so.1
--- snip ---

Native 'd3dx9_40' is automatically preferred over builtin if found.

Forcing the game to use builtin results in:

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/WBGames/Monolith Productions/F.E.A.R. 2
SP Demo

$ WINEDLLOVERRIDES=d3dx9_40=b WINEDEBUG=+tid,+seh,+relay,+d3dx wine
./FEAR2SPDemo.exe +windowed 1
...
0026:trace:d3dx:ID3DXEffectImpl_SetTechnique iface 0x209ed8, technique
0x71a6f38
0026:trace:d3dx:ID3DXEffectImpl_SetTechnique Technique 0x71a6f38
0026:trace:d3dx:ID3DXEffectImpl_Begin iface 0x209ed8, passes 0x1d1f474, flags
0.
0026:fixme:d3dx:ID3DXEffectImpl_Begin State capturing not supported, yet!
0026:trace:d3dx:ID3DXEffectImpl_GetPass iface 0x209ed8, technique 0x71a6f38,
index 0.
0026:trace:d3dx:d3dx9_base_effect_get_pass Returning pass 0x71a6f68
0026:trace:d3dx:ID3DXEffectImpl_BeginPass iface 0x209ed8, pass 0
0026:fixme:d3dx:ID3DXEffectImpl_BeginPass No states applied, yet!
0026:fixme:d3dx:ID3DXEffectImpl_CommitChanges (0x209ed8)->(): stub 
...
0026:trace:d3dx:ID3DXEffectImpl_EndPass iface 0x209ed8
0026:trace:d3dx:ID3DXEffectImpl_End iface 0x209ed8.
0026:fixme:d3dx:ID3DXEffectImpl_End State restoring not supported, yet! 
...
0026:Call
d3dx9_36.D3DXLoadSurfaceFromMemory(0931a628,00000000,00000000,0c814028,0000001c,00000400,00000000,01d1ed0c,00000001,00000000)
ret=00a3fe10
0026:trace:d3dx:D3DXLoadSurfaceFromMemory (0x931a628, (nil), (null), 0xc814028,
0x1c, 1024, (nil), (0,0)-(1024,1024) 0x1, 0x00000000) 
...
0026:Ret  d3dx9_36.D3DXLoadSurfaceFromMemory() retval=00000000 ret=00a3fe10 
...
0026:Call wined3d.wined3d_device_set_render_state(001810f8,000000cf,00000001)
ret=7e25d495
0026:Ret  wined3d.wined3d_device_set_render_state() retval=00000001
ret=7e25d495
0026:Call wined3d.wined3d_mutex_unlock() ret=7e25d49a
0026:Ret  wined3d.wined3d_mutex_unlock() retval=00000000 ret=7e25d49a
0026:Call wined3d.wined3d_mutex_lock() ret=7e25d478
0026:Ret  wined3d.wined3d_mutex_lock() retval=00000000 ret=7e25d478
0026:Call wined3d.wined3d_device_set_render_state(001810f8,000000d0,00000002)
ret=7e25d495
0026:Ret  wined3d.wined3d_device_set_render_state() retval=00000001
ret=7e25d495
0026:Call wined3d.wined3d_mutex_unlock() ret=7e25d49a
0026:Ret  wined3d.wined3d_mutex_unlock() retval=00000000 ret=7e25d49a 
...
0026:trace:seh:raise_exception code=c0000005 flags=0 addr=0xa3c29d ip=00a3c29d
tid=0026
0026:trace:seh:raise_exception  info[0]=00000000
0026:trace:seh:raise_exception  info[1]=00000010
0026:trace:seh:raise_exception  eax=01d1edbc ebx=00bf7b80 ecx=00000000
edx=7e241b64 esi=00000000 edi=00bf5a48
0026:trace:seh:raise_exception  ebp=01d1ed98 esp=01d1ed94 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00210246
0026:trace:seh:call_stack_handlers calling handler at 0x993f9d code=c0000005
flags=0
0026:Call
msvcr80._except_handler4_common(00ba2120,00993bba,01d1ed3c,01d1f73c,01d1ea70,01d1e8fc)
ret=00993fbc 
...
Unhandled exception: page fault on read access to 0x00000010 in 32-bit code
(0x00a3c29d).
Register dump:
 CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
 EIP:00a3c29d ESP:01d1ed94 EBP:01d1ed98 EFLAGS:00210246(  R- --  I  Z- -P- )
 EAX:01d1edbc EBX:00bf7b80 ECX:00000000 EDX:7e241b64
 ESI:00000000 EDI:00bf5a48
...
Backtrace:
=>0 0x00a3c29d in fear2spdemo (+0x63c29d) (0x01d1ed98)
  1 0x00a3358c in fear2spdemo (+0x63358b) (0x01d1edb4)
  2 0x00a33c0d in fear2spdemo (+0x633c0c) (0x01d1ee24)
  3 0x00927db8 in fear2spdemo (+0x527db7) (0x01d1ee68)
  4 0x0094c8f9 in fear2spdemo (+0x54c8f8) (0x01d1f0c8)
  5 0x00946781 in fear2spdemo (+0x546780) (0x0b8eea08)
  6 0x00000001 (0x00ac9ef8)
  7 0x0092ba20 in fear2spdemo (+0x52ba1f) (0x008f0bf0)
  8 0xffffff18 (0xe8f18b56)
0x00a3c29d: cmpl    $0,0x10(%esi)
Modules:
Module    Address            Debug info    Name (122 modules)
PE      240000-  247000    Deferred        x3daudio1_5
PE      400000- 181e000    Export          fear2spdemo
PE    18000000-18033000    Deferred        binkw32
ELF    4e99a000-4e9a3000    Deferred        librt.so.1 
...
Threads:
process  tid      prio (all id:s are in hex)
...
00000025 (D) C:\Program Files\WBGames\Monolith Productions\F.E.A.R. 2 SP
Demo\FEAR2SPDemo.exe
    00000040    0
    0000003c    0
    00000027    0
    0000001e    0
    00000024    0
    00000016    0
    0000000d    0
    0000000b    0
    00000047    0
    00000026    0 <== 
--- snip ---

I debugged that stuff despite the DRM scheme being used and it looks like the
crash happens with a NULL object in a location with following sequence being
applied:

ID3DXEffectImpl_End
ID3DXEffectImpl_Begin State
ID3DXEffectImpl_BeginPass

Tidbit (DRM scheme used in demo):

--- snip ---
-=[ ProtectionID v0.6.5.5 OCTOBER]=-
(c) 2003-2013 CDKiLLER & TippeX
Build 31/10/13-21:09:09
Ready...
Scanning -> C:\Program Files\WBGames\Monolith Productions\F.E.A.R. 2 SP
Demo\FEAR2SPDemo.exe
File Type : 32-Bit Exe (Subsystem : Win GUI / 2), Size : 15125320 (0E6CB48h)
Byte(s)
-> File Appears to be Digitally Signed @ Offset 0E6B600h, size : 01548h / 05448
byte(s)
[File Heuristics] -> Flag : 00000000000000000000000100000101 (0x00000105)
[Entrypoint Section Entropy] : 6.65
[!] SecuROM Detected - Version 07.39.0004
[!] Possible CD/DVD-Key or Serial Check -> CDKey
[CompilerDetect] -> Visual C++ 8.0 (Visual Studio 2005)
- Scan Took : 0.800 Second(s) [000000320h tick(s)] [533 scan(s) done]
--- snip ---

$ sha1sum fear2demo.zip 
c85736f4d63fa278b085009a98820f474c64014b  fear2demo.zip

$ du -sh fear2demo.zip 
1.8G    fear2demo.zip

$ wine --version
wine-1.7.21-52-g4c185a7

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