http://bugs.winehq.org/show_bug.cgi?id=27827
Summary: Creo Elements/Direct Modeling Express 4.0 loader failure due to missing msvcrt.dll dependency Product: Wine Version: 1.3.24 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net
Hello,
a user reported a problem with this app on IRC #winehq. It seems there is a dll dependency to msvcrt.dll not present with Wine dlls.
--- snip --- ... 0025:Call PE DLL (proc=0x5c172245,module=0x5c170000 L"redirect.dll",reason=PROCESS_ATTACH,res=0x1) 0025:Call KERNEL32.GetEnvironmentVariableW(5c17309c L"SDREDIRECTION",5c175f30,00000040) ret=5c171d99 0025:Ret KERNEL32.GetEnvironmentVariableW() retval=00000000 ret=5c171d99 0025:Call KERNEL32.lstrcmpiW(5c173810 L"no",5c1730b8 L"") ret=5c17228a 0025:Ret KERNEL32.lstrcmpiW() retval=00000001 ret=5c17228a 0025:Call KERNEL32.SetEnvironmentVariableW(5c1738c0 L"_NO_DEBUG_HEAP",5c1738bc L"1") ret=5c1722b1 0025:Ret KERNEL32.SetEnvironmentVariableW() retval=00000001 ret=5c1722b1 0025:Call KERNEL32.GetModuleHandleW(00000000) ret=5c1722e0 0025:Ret KERNEL32.GetModuleHandleW() retval=00400000 ret=5c1722e0 0025:Call KERNEL32.GetProcAddress(00400000,5c173954 "ThreadAttached") ret=5c1722e7 0025:Ret KERNEL32.GetProcAddress() retval=004e6e20 ret=5c1722e7 0025:Call KERNEL32.GetModuleHandleW(00000000) ret=5c1722f9 0025:Ret KERNEL32.GetModuleHandleW() retval=00400000 ret=5c1722f9 0025:Call KERNEL32.GetProcAddress(00400000,5c173964 "ThreadDetached") ret=5c172300 0025:Ret KERNEL32.GetProcAddress() retval=004e6e40 ret=5c172300 0025:Call KERNEL32.GetModuleHandleW(5c173624 L"MSVCRT") ret=5c17212b 0025:trace:module:LdrGetDllHandle L"MSVCRT" -> (nil) (load path L"C:\Program Files\PTC\Creo Elements\Direct Modeling Express 4.0\binNT;.;C:\windows\system32;C:\windows\system;C:\windows;C:\windows\system32;C:\windows;C:\windows\system32\wbem") 0025:Ret KERNEL32.GetModuleHandleW() retval=00000000 ret=5c17212b 0025:Call KERNEL32.GetProcAddress(00000000,5c173618 "setlocale") ret=5c172132 0025:Ret KERNEL32.GetProcAddress() retval=00000000 ret=5c172132 0025:Call KERNEL32.OutputDebugStringW(5c173650 L"redirect: Cannot find setlocale() in msvcrt.dll.") ret=5c17214b 0025:Ret KERNEL32.OutputDebugStringW() retval=0032fc80 ret=5c17214b 0025:Call KERNEL32.lstrcmpiW(5c173610 L"try",5c1730b8 L"") ret=5c172230 0025:Ret KERNEL32.lstrcmpiW() retval=00000001 ret=5c172230 0025:Call KERNEL32.RaiseException(0000002c,00000000,00000000,00000000) ret=5c172243 0025:trace:seh:raise_exception code=2c flags=0 addr=0x683704bb ip=683704bb tid=0025 0025:trace:seh:raise_exception eax=6835dc85 ebx=683e06c4 ecx=00000000 edx=00000010 esi=0032fd18 edi=0032fc90 0025:trace:seh:raise_exception ebp=0032fc78 esp=0032fc14 cs=0073 ds=007b es=007b fs=0033 gs=003b flags=00200246 0025:trace:seh:call_stack_handlers calling handler at 0x7b9fbf2e code=2c flags=0 0025:trace:seh:__regs_RtlUnwind code=2c flags=2 0025:trace:seh:__regs_RtlUnwind calling handler at 0x7b9e0be3 code=2c flags=2 0025:trace:seh:__regs_RtlUnwind handler at 0x7b9e0be3 returned 1 ... --- snip ---
The dll init code from "redirect.dll" assumes "msvcrt.dll" has already been loaded (hence GetModuleHandleW).
There is an earlier loading attempt of "msvcrt.dll" due to Wine builtin MSVCR100.dll which is later dropped because native MSVCR100.dll has precedence.
--- snip --- ... 0025:warn:module:load_builtin_dll failed to load .so lib for builtin L"C:\windows\system32\MSVCR100.dll": /home/focht/.wine/dosdevices/c:/windows/system32/msvcr100.dll: invalid ELF header 0025:trace:module:load_builtin_dll Trying built-in L"MSVCR100.dll" 0025:trace:module:load_dll looking for L"msvcrt.dll" in L"C:\Program Files\PTC\Creo Elements\Direct Modeling Express 4.0\binNT;.;C:\windows\system32;C:\windows\system;C:\windows;C:\windows\system32;C:\windows;C:\windows\system32\wbem" 0025:trace:module:get_load_order looking for L"C:\windows\system32\msvcrt.dll" 0025:trace:module:get_load_order got hardcoded default for L"msvcrt.dll" 0025:trace:module:load_dll L"C:\windows\system32\msvcrt.dll" is a fake Wine dll 0025:trace:module:load_builtin_dll Trying built-in L"msvcrt.dll" 0025:trace:module:load_dll looking for L"kernel32.dll" in L"C:\Program Files\PTC\Creo Elements\Direct Modeling Express 4.0\binNT;.;C:\windows\system32;C:\windows\system;C:\windows;C:\windows\system32;C:\windows;C:\windows\system32\wbem" 0025:trace:module:load_dll Found L"C:\windows\system32\KERNEL32.dll" for L"kernel32.dll" at 0x68350000, count=7 0025:trace:module:load_dll looking for L"ntdll.dll" in L"C:\Program Files\PTC\Creo Elements\Direct Modeling Express 4.0\binNT;.;C:\windows\system32;C:\windows\system;C:\windows;C:\windows\system32;C:\windows;C:\windows\system32\wbem" 0025:trace:module:load_dll Found L"C:\windows\system32\ntdll.dll" for L"ntdll.dll" at 0x7b980000, count=7 0025:trace:module:load_builtin_callback loaded msvcrt.dll 0x116490 0x68780000 0025:trace:loaddll:load_builtin_dll Loaded L"C:\windows\system32\msvcrt.dll" at 0x68780000: builtin 0025:trace:module:load_dll Loaded module L"C:\windows\system32\msvcrt.dll" (builtin) at 0x68780000 0025:trace:module:load_dll looking for L"kernel32.dll" in L"C:\Program Files\PTC\Creo Elements\Direct Modeling Express 4.0\binNT;.;C:\windows\system32;C:\windows\system;C:\windows;C:\windows\system32;C:\windows;C:\windows\system32\wbem" 0025:trace:module:load_dll Found L"C:\windows\system32\KERNEL32.dll" for L"kernel32.dll" at 0x68350000, count=8 0025:trace:module:load_builtin_callback loaded msvcr100.dll 0x116398 0x68740000 0025:trace:loaddll:load_builtin_dll Loaded L"C:\windows\system32\msvcr100.dll" at 0x68740000: builtin 0025:Call PE DLL (proc=0x6874bac4,module=0x68740000 L"msvcr100.dll",reason=WINE_PREATTACH,res=(nil)) 0025:Ret PE DLL (proc=0x6874bac4,module=0x68740000 L"msvcr100.dll",reason=WINE_PREATTACH,res=(nil)) retval=0 0025:trace:module:load_dll L"C:\windows\system32\MSVCR100.dll" pre-attach returned FALSE, preferring native 0025:trace:module:LdrUnloadDll (0x68740000) 0025:trace:module:LdrUnloadDll (L"msvcr100.dll") - START 0025:trace:module:MODULE_DecRefCount (L"msvcr100.dll") ldr.LoadCount: 0 0025:trace:module:MODULE_DecRefCount (L"msvcrt.dll") ldr.LoadCount: 0 0025:trace:module:MODULE_DecRefCount (L"KERNEL32.dll") ldr.LoadCount: 7 0025:trace:module:MODULE_DecRefCount (L"ntdll.dll") ldr.LoadCount: 6 0025:trace:module:MODULE_DecRefCount (L"KERNEL32.dll") ldr.LoadCount: 6 0025:trace:module:free_modref unloading L"C:\windows\system32\msvcrt.dll" 0025:trace:module:free_modref unloading L"C:\windows\system32\msvcr100.dll" 0025:trace:module:LdrUnloadDll END 0025:trace:module:load_native_dll Trying native dll L"C:\windows\system32\MSVCR100.dll" ... --- snip ---
It would be helpful if someone could install the app on Windows and load "SolidDesigner.exe" main executable in Dependency Walker Tool (http://www.dependencywalker.com/) to figure out which dll pulls in "msvcrt.dll".
In the listview select "msvcrt.dll" and then right click context menu "highlight matching module in tree". This would ideally show the parent dll in tree view that pulls in the dependency.
Regards