[Bug 38845] Battle.net launcher doesn't render user interface in Win7+ mode, causing white screen (builtin 'd3dcompiler_46.dll' is not mature enough)

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Jul 12 14:52:49 CDT 2015


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |download
                URL|                            |http://dist.blizzard.com/do
                   |                            |wnloads/wow-installers/full
                   |                            |/World-of-Warcraft-Setup-en
                   |                            |GB.exe
                 CC|                            |focht at gmx.net
          Component|-unknown                    |directx-d3d
            Summary|Battle.net launcher no      |Battle.net launcher doesn't
                   |longer displays             |render user interface in
                   |                            |Win7+ mode, causing white
                   |                            |screen (builtin
                   |                            |'d3dcompiler_46.dll' is not
                   |                            |mature enough)
    Regression SHA1|8609e2d2722b2a9533df2408002 |ca7ce1678b61b88966a48f591be
                   |6206c75a6af79               |566e04f3d669f

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

confirming.

The regression sha1
https://source.winehq.org/git/wine.git/commit/8609e2d2722b2a9533df24080026206c75a6af79
doesn't make sense here.

The game ships a native 'd3dcompiler_43.dll' on its own but not
'd3dcompiler_46.dll'.

If the Windows version of the WINEPREFIX' is set to 'Windows XP' (default), the
launcher loads 'd3dcompiler_43.dll' which causes the loader to use native dll
in the end (builtin 'd3dcompiler_43' -> prefer native over builtin -> native).

Relevant part of trace log:

--- snip ---
...
0042:Call KERNEL32.LoadLibraryW(01b2f360 L"D3DCompiler_43.dll") ret=10eba1a5
0042:trace:module:load_dll looking for L"D3DCompiler_43.dll" in L"C:\\Program
Files
(x86)\\Battle.net\\Battle.net.5952;.;C:\\windows\\system32;C:\\windows\\system;C:\\windows;C:\\windows\\system32;C:\\windows;C:\\windows\\system32\\wbem"
0042:trace:module:get_load_order looking for L"C:\\Program Files
(x86)\\Battle.net\\Battle.net.5952\\D3DCompiler_43.dll"
0042:trace:module:get_load_order got hardcoded default for L"C:\\Program Files
(x86)\\Battle.net\\Battle.net.5952\\D3DCompiler_43.dll"
0042:trace:module:load_builtin_dll Trying built-in L"C:\\Program Files
(x86)\\Battle.net\\Battle.net.5952\\D3DCompiler_43.dll"
0042:warn:module:load_builtin_dll failed to load .so lib for builtin
L"C:\\Program Files (x86)\\Battle.net\\Battle.net.5952\\D3DCompiler_43.dll":
/home/focht/wine-games/wineprefix-battlenet/dosdevices/c:/Program Files
(x86)/Battle.net/Battle.net.5952/d3dcompiler_43.dll: invalid ELF header
0042:trace:module:load_builtin_dll Trying built-in L"D3DCompiler_43.dll"
0042:trace:module:load_dll looking for L"kernel32.dll" in L"C:\\Program Files
(x86)\\Battle.net\\Battle.net.5952;.;C:\\windows\\system32;C:\\windows\\system;C:\\windows;C:\\windows\\system32;C:\\windows;C:\\windows\\system32\\wbem"
0042:trace:module:load_dll Found L"C:\\windows\\system32\\KERNEL32.dll" for
L"kernel32.dll" at 0x7b820000, count=-1
0042:trace:module:load_builtin_callback loaded d3dcompiler_43.dll 0x177460
0x7c490000
0042:trace:loaddll:load_builtin_dll Loaded
L"C:\\windows\\system32\\d3dcompiler_43.dll" at 0x7c490000: builtin
0042:Call PE DLL (proc=0x7c4d602c,module=0x7c490000
L"d3dcompiler_43.dll",reason=WINE_PREATTACH,res=(nil))
0042:Ret  PE DLL (proc=0x7c4d602c,module=0x7c490000
L"d3dcompiler_43.dll",reason=WINE_PREATTACH,res=(nil)) retval=0
0042:trace:module:load_dll L"C:\\Program Files
(x86)\\Battle.net\\Battle.net.5952\\D3DCompiler_43.dll" pre-attach returned
FALSE, preferring native
0042:trace:module:LdrUnloadDll (0x7c490000)
0042:trace:module:LdrUnloadDll (L"d3dcompiler_43.dll") - START
0042:trace:module:MODULE_DecRefCount (L"d3dcompiler_43.dll") ldr.LoadCount: 0
0042:trace:module:free_modref  unloading
L"C:\\windows\\system32\\d3dcompiler_43.dll"
0042:trace:module:LdrUnloadDll END
0042:trace:module:load_native_dll Trying native dll L"C:\\Program Files
(x86)\\Battle.net\\Battle.net.5952\\D3DCompiler_43.dll"
0042:trace:module:map_image mapped PE file at 0x3300000-0x3507000
0042:trace:module:map_image mapping section .text at 0x3301000 off 400 size
1ee200 virt 1ee053 flags 60000020
0042:trace:module:map_image clearing 0x34ef200 - 0x34f0000
0042:trace:module:map_image mapping section .data at 0x34f0000 off 1ee600 size
4200 virt 7ea4 flags c0000040
0042:trace:module:map_image clearing 0x34f4200 - 0x34f5000
0042:trace:module:map_image mapping section .rsrc at 0x34f8000 off 1f2800 size
400 virt 3c8 flags 40000040
0042:trace:module:map_image clearing 0x34f8400 - 0x34f9000
0042:trace:module:map_image mapping section .reloc at 0x34f9000 off 1f2c00 size
e000 virt df44 flags 42000040
0042:trace:module:map_image relocating from 0x10000000-0x10207000 to
0x3300000-0x3507000
...
0042:trace:loaddll:load_native_dll Loaded L"C:\\Program Files
(x86)\\Battle.net\\Battle.net.5952\\D3DCompiler_43.dll" at 0x3300000: native
0042:trace:module:load_dll Loaded module L"C:\\Program Files
(x86)\\Battle.net\\Battle.net.5952\\D3DCompiler_43.dll" (native) at 0x3300000
0042:trace:module:process_attach (L"D3DCompiler_43.dll",(nil)) - START
0042:trace:module:process_attach (L"msvcrt.dll",(nil)) - START
--- snip --- 

If the Windows version of the WINEPREFIX is set to 'Windows 7', the launcher
loads 'd3dcompiler_46.dll' by default.

Relevant part of trace log:

--- snip --- 
...
0039:Call KERNEL32.LoadLibraryW(01b2f360 L"D3DCompiler_46.dll") ret=10eba1a5
0039:trace:module:load_dll looking for L"D3DCompiler_46.dll" in L"C:\\Program
Files
(x86)\\Battle.net\\Battle.net.5952;.;C:\\windows\\system32;C:\\windows\\system;C:\\windows;C:\\windows\\system32;C:\\windows;C:\\windows\\system32\\wbem"
0039:trace:module:get_load_order looking for
L"C:\\windows\\system32\\D3DCompiler_46.dll"
0039:trace:module:get_load_order got hardcoded default for
L"D3DCompiler_46.dll"
0039:trace:module:load_dll L"C:\\windows\\system32\\D3DCompiler_46.dll" is a
fake Wine dll
0039:trace:module:load_builtin_dll Trying built-in L"D3DCompiler_46.dll"
0039:trace:module:load_dll looking for L"kernel32.dll" in L"C:\\Program Files
(x86)\\Battle.net\\Battle.net.5952;.;C:\\windows\\system32;C:\\windows\\system;C:\\windows;C:\\windows\\system32;C:\\windows;C:\\windows\\system32\\wbem"
0039:trace:module:load_dll Found L"C:\\windows\\system32\\KERNEL32.dll" for
L"kernel32.dll" at 0x7b820000, count=-1
0039:trace:module:load_builtin_callback loaded d3dcompiler_46.dll 0x1776a8
0x7c440000
0039:trace:loaddll:load_builtin_dll Loaded
L"C:\\windows\\system32\\d3dcompiler_46.dll" at 0x7c440000: builtin
0039:trace:module:load_dll Loaded module
L"C:\\windows\\system32\\D3DCompiler_46.dll" (builtin) at 0x7c440000
0039:trace:module:process_attach (L"d3dcompiler_46.dll",(nil)) - START
0039:Call PE DLL (proc=0x7c48e184,module=0x7c440000
L"d3dcompiler_46.dll",reason=PROCESS_ATTACH,res=(nil))
0039:Call KERNEL32.DisableThreadLibraryCalls(7c440000) ret=7c45c4bd
0039:Ret  KERNEL32.DisableThreadLibraryCalls() retval=00000001 ret=7c45c4bd
0039:Ret  PE DLL (proc=0x7c48e184,module=0x7c440000
L"d3dcompiler_46.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1
0039:trace:module:process_attach (L"d3dcompiler_46.dll",(nil)) - END
0039:Ret  KERNEL32.LoadLibraryW() retval=7c440000 ret=10eba1a5
0039:Call KERNEL32.SetCurrentDirectoryW(01b378c0 L"C:\\Program Files
(x86)\\Battle.net\\Battle.net.5952") ret=100e33d5
0039:Ret  KERNEL32.SetCurrentDirectoryW() retval=00000001 ret=100e33d5 
...
0034:Call d3dcompiler_46.D3DCompile(01cbe698,0000051f,011a397c
"C:\\fakepath",00000000,00000000,02098558 "main",0119ef80
"vs_3_0",00000000,00000000,0033cc40,0033cc3c) ret=02084ad2 
...
0034:err:d3dcompiler:compile_shader HLSL shader parsing failed. 
...
0034:Call d3dcompiler_46.D3DCompile(01cfdbc0,00000230,011a397c
"C:\\fakepath",00000000,00000000,02098558 "main",0119ef70
"ps_3_0",00000000,00000000,0033cc40,0033cc3c) ret=02084ad2 
...
0034:err:d3dcompiler:compile_shader HLSL shader parsing failed. 
...
--- snip --- 

Since the game doesn't ship native 'd3dcompiler_46.dll', it's Wine's builtin
being used here - with all deficiencies.

If you want to blame a commit - it would be rather this one:

https://source.winehq.org/git/wine.git/commit/ca7ce1678b61b88966a48f591be566e04f3d669f
("d3dcompiler_46: Add stub dll.").

Anyway, there are various insufficiencies with Wine's d3dcompiler
implementation, making this likely a dupe of already existing bugs.

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