[Bug 46995] New: Rekordbox 5.3.0 installer (32-bit process under WoW64) fails to load 32-bit code dlls with WoW64 filesystem redirection disabled

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Apr 12 13:28:52 CDT 2019


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

            Bug ID: 46995
           Summary: Rekordbox 5.3.0 installer (32-bit process under WoW64)
                    fails to load 32-bit code dlls with WoW64 filesystem
                    redirection disabled
           Product: Wine
           Version: 4.5
          Hardware: x86-64
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ntdll
          Assignee: wine-bugs at winehq.org
          Reporter: focht at gmx.net
      Distribution: ---

Hello folks,

encountered this while investigating bug 45543 (different issue).

The 32-bit installer (for 64-bit app) does a somewhat questionable thing:

--- snip ---
$ WINEDEBUG=+seh,+relay,+loaddll,+module wine ./Install_rekordbox_x64_5_3_0.exe
>>log.txt 2>&1
...
0059:Call KERNEL32.LoadLibraryExW(0040f0d0
L"C:\\users\\focht\\Temp\\nsqb4a0.tmp\\System.dll",00000000,00000008)
ret=00402433 
...
0059:trace:module:process_attach (L"System.dll",(nil)) - START
0059:Call PE DLL (proc=0x10002728,module=0x10000000
L"System.dll",reason=PROCESS_ATTACH,res=(nil))
0059:Call KERNEL32.VirtualProtect(10004020,00000004,00000040,10004028)
ret=1000274c
0059:Ret  KERNEL32.VirtualProtect() retval=00000001 ret=1000274c
0059:Ret  PE DLL (proc=0x10002728,module=0x10000000
L"System.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1
0059:trace:module:process_attach (L"System.dll",(nil)) - END
0059:Ret  KERNEL32.LoadLibraryExW() retval=10000000 ret=00402433
...
0059:Call KERNEL32.GetProcAddress(10000000,0016fc70 "Call") ret=004064fc
0059:Ret  KERNEL32.GetProcAddress() retval=10002a4f ret=004064fc
...
0059:Call KERNEL32.lstrcpyW(00177c90,0016bc24
L"kernel32::Wow64EnableWow64FsRedirection(i0)") ret=100015c7
0059:Ret  KERNEL32.lstrcpyW() retval=00177c90 ret=100015c7 
...
0059:Call KERNEL32.Wow64EnableWow64FsRedirection(00000000) ret=1000130d
0059:Ret  KERNEL32.Wow64EnableWow64FsRedirection() retval=00000001 ret=1000130d
...
0059:Call KERNEL32.IsWow64Process(ffffffff,0015c9d0) ret=1000130d
0059:Ret  KERNEL32.IsWow64Process() retval=00000001 ret=1000130d
...
0059:Call KERNEL32.LoadLibraryW(0040941c L"RichEd20") ret=00405d04
0059:trace:module:load_dll looking for L"RichEd20" in
L"Z:\\home\\focht\\Downloads;C:\\windows\\system32;C:\\windows\\system;C:\\windows;.;C:\\windows\\system32;C:\\windows;C:\\windows\\system32\\wbem"
0059:trace:module:map_image mapped PE file at 0x390000-0x3a3000
0059:trace:module:map_image mapping section .text at 0x391000 off 200 size 5
virt 1000 flags 60000020
...
0059:trace:module:open_dll_file L"\\??\\C:\\windows\\system32\\RichEd20.dll" is
for arch 8664, continuing search
0059:trace:module:map_image mapped PE file at 0x390000-0x3a3000
0059:trace:module:map_image mapping section .text at 0x391000 off 200 size 5
virt 1000 flags 60000020
...
0059:trace:module:open_dll_file L"\\??\\C:\\windows\\system32\\RichEd20.dll" is
for arch 8664, continuing search
0059:warn:module:load_dll Failed to load module L"RichEd20"; status=c000007b
0059:Ret  KERNEL32.LoadLibraryW() retval=00000000 ret=00405d04
0059:Call KERNEL32.LoadLibraryW(00409408 L"RichEd32") ret=00405d0f
0059:trace:module:load_dll looking for L"RichEd32" in
L"Z:\\home\\focht\\Downloads;C:\\windows\\system32;C:\\windows\\system;C:\\windows;.;C:\\windows\\system32;C:\\windows;C:\\windows\\system32\\wbem"
0059:trace:module:map_image mapped PE file at 0x370000-0x374000
0059:trace:module:map_image mapping section .text at 0x371000 off 200 size 5
virt 1000 flags 60000020
...
0059:trace:module:open_dll_file L"\\??\\C:\\windows\\system32\\RichEd32.dll" is
for arch 8664, continuing search
0059:trace:module:map_image mapped PE file at 0x370000-0x374000
0059:trace:module:map_image mapping section .text at 0x371000 off 200 size 5
virt 1000 flags 60000020
...
0059:trace:module:open_dll_file L"\\??\\C:\\windows\\system32\\RichEd32.dll" is
for arch 8664, continuing search
0059:warn:module:load_dll Failed to load module L"RichEd32"; status=c000007b
0059:Ret  KERNEL32.LoadLibraryW() retval=00000000 ret=00405d0f 
..
0059:Call KERNEL32.LoadLibraryExW(0040f0d0
L"C:\\users\\focht\\Temp\\nsqb4a0.tmp\\InstallOptions.dll",00000000,00000008)
ret=00402433
...
0059:trace:module:load_native_dll Trying native dll
L"\\??\\C:\\users\\focht\\Temp\\nsqb4a0.tmp\\InstallOptions.dll"
0059:trace:module:perform_relocations relocating from 0x10000000-0x1000b000 to
0x3b0000-0x3bb000
...
0059:trace:module:map_image mapped PE file at 0x1d90000-0x1e38000
0059:trace:module:map_image mapping section .text at 0x1d91000 off 200 size 5
virt 1000 flags 60000020
...
0059:trace:module:open_dll_file L"\\??\\C:\\windows\\system32\\COMDLG32.dll" is
for arch 8664, continuing search
0059:trace:module:map_image mapped PE file at 0x1d90000-0x1e38000
0059:trace:module:map_image mapping section .text at 0x1d91000 off 200 size 5
virt 1000 flags 60000020
...
0059:trace:module:open_dll_file L"\\??\\C:\\windows\\system32\\COMDLG32.dll" is
for arch 8664, continuing search
0059:warn:module:load_dll Failed to load module L"COMDLG32.dll";
status=c000007b
0059:err:module:import_dll Loading library COMDLG32.dll (which is needed by
L"C:\\users\\focht\\Temp\\nsqb4a0.tmp\\InstallOptions.dll") failed (error
c000007b).
0059:trace:module:load_dll looking for L"ole32.dll" in
L"C:\\users\\focht\\Temp\\nsqb4a0.tmp;C:\\windows\\system32;C:\\windows\\system;C:\\windows;.;C:\\windows\\system32;C:\\windows;C:\\windows\\system32\\wbem"
0059:trace:module:load_dll Found L"C:\\windows\\system32\\ole32.dll" for
L"ole32.dll" at 0x7da20000, count=-1
0059:warn:module:load_dll Failed to load module
L"C:\\users\\focht\\Temp\\nsqb4a0.tmp\\InstallOptions.dll"; status=c0000135
0059:Ret  KERNEL32.LoadLibraryExW() retval=00000000 ret=00402433
...
0059:Call user32.SetWindowTextW(000200a6,0043b238 L"Could not load:
C:\\users\\focht\\Temp\\nsqb4a0.tmp\\InstallOptions.dll") ret=00405145
...
--- snip ---

The 32-bit installer explicitly disables WoW64 file system redirection in main
thread -> 'Wow64EnableWow64FsRedirection(FALSE)' and tries to load 32-bit
dependencies dynamically which obviously fails. I double checked everything,
there is no restore in between.

NOTE: On other threads it correctly disables and restores redirection which
works fine (not shown here).

The failure is not critical for overall installer run but I assume this somehow
works in 64-bit Windows (32-bit process under WoW64). Unfortunately I couldn't
find any reasonable explanation/documentation for this behaviour. Maybe some
Microsoft workaround for broken apps/installers?

$ sha1sum Install_rekordbox_x64_5_3_0.exe 
f5e5dfbbef3997d8cb2cca9e1412765bf91398b2  Install_rekordbox_x64_5_3_0.exe

$ du -sh Install_rekordbox_x64_5_3_0.exe 
228M    Install_rekordbox_x64_5_3_0.exe

$ wine --version
wine-4.5-369-g9e80dc925e

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