[Bug 50407] New: Multiple Adobe CC products fail to start, reporting 'err:module:LdrInitializeThunk "CRClient.dll" failed to initialize' ('_Syserror_map' should return non-NULL string for unknown errors)
WineHQ Bugzilla
wine-bugs at winehq.org
Sat Dec 26 12:36:29 CST 2020
https://bugs.winehq.org/show_bug.cgi?id=50407
Bug ID: 50407
Summary: Multiple Adobe CC products fail to start, reporting
'err:module:LdrInitializeThunk "CRClient.dll" failed
to initialize' ('_Syserror_map' should return non-NULL
string for unknown errors)
Product: Wine
Version: 6.0-rc3
Hardware: x86-64
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: msvcp
Assignee: wine-bugs at winehq.org
Reporter: focht at gmx.net
Distribution: ---
Hello folks,
found with various Adobe CC products. User visible symptom in console:
--- snip ---
err:module:LdrInitializeThunk "CRClient.dll" failed to initialize, aborting
--- snip ---
Mentioned in bug 47015 and probably more. Users install a crapload of MSVC
runtimes via 'winetricks' hence the error is gone - only to run into other Wine
bugs.
--- snip ---
$ WINEDEBUG=+seh,+relay,+msvcp wine ./Adobe\ Audition.exe >>log.txt 2>&1
...
0104:Ret PE DLL (proc=0000000012F6C30C,module=0000000012EF0000
L"AuUIToolkit.dll",reason=PROCESS_ATTACH,res=000000000021FB00) retval=1
0104:Call PE DLL (proc=0000000013134EF4,module=0000000013100000
L"CRClient.dll",reason=PROCESS_ATTACH,res=000000000021FB00)
...
0104:Call msvcp140.?_Syserror_map at std@@YAPEBDH at Z(00000000) ret=1310db9c
0104:trace:msvcp:_Syserror_map (0)
0104:Ret msvcp140.?_Syserror_map at std@@YAPEBDH at Z() retval=00000000 ret=1310db9c
0104:trace:seh:dispatch_exception code=c0000005 flags=0 addr=000000001310DBAA
ip=000000001310DBAA tid=0104
0104:trace:seh:dispatch_exception info[0]=0000000000000000
0104:trace:seh:dispatch_exception info[1]=0000000000000000
0104:trace:seh:dispatch_exception rax=0000000000000000 rbx=0000000000000000
rcx=00000000ffe0e8d7 rdx=0000000000000050
0104:trace:seh:dispatch_exception rsi=000000000021ea10 rdi=000000000021e960
rbp=000000000021eaf0 rsp=000000000021e8b0
0104:trace:seh:dispatch_exception r8=0000000000000fff r9=0000000000000000
r10=000000000021e40b r11=0000000000000246
0104:trace:seh:dispatch_exception r12=000000000021fb00 r13=00000000ffd90000
r14=0000000000387f6a r15=0000000000387f53
0104:trace:seh:call_vectored_handlers calling handler at 000000007B011BA0
code=c0000005 flags=0
0104:trace:seh:call_vectored_handlers handler at 000000007B011BA0 returned 0
...
0104:exception c0000005 in PE entry point
(proc=0000000013134EF4,module=0000000013100000,reason=PROCESS_ATTACH,res=000000000021FB00)
0104:Ret PE DLL (proc=0000000013134EF4,module=0000000013100000
L"CRClient.dll",reason=PROCESS_ATTACH,res=000000000021FB00) retval=0
0104:Call PE DLL (proc=0000000013134EF4,module=0000000013100000
L"CRClient.dll",reason=PROCESS_DETACH,res=000000000021FB00)
0104:Ret PE DLL (proc=0000000013134EF4,module=0000000013100000
L"CRClient.dll",reason=PROCESS_DETACH,res=000000000021FB00) retval=0
0104:err:module:LdrInitializeThunk "CRClient.dll" failed to initialize,
aborting
0104:err:module:LdrInitializeThunk Initializing dlls for
L"Z:\\home\\focht\\Downloads\\audition\\1\\universal\\App\\Adobe Audition.exe"
failed, status c0000005
...
--- snip ---
_Syserror_map(0) seems intentional at this place. I found no preceding code
path in the dll init code that passes an actual error value.
Corresponding client code:
--- snip ---
000000001310DB80 | mov qword ptr ss:[rsp+8],rbx |
000000001310DB85 | push rdi |
000000001310DB86 | sub rsp,30 |
000000001310DB8A | xor ebx,ebx |
000000001310DB8C | mov ecx,r8d | error = 0 (caller)
000000001310DB8F | mov dword ptr ss:[rsp+20],ebx |
000000001310DB93 | mov rdi,rdx |
000000001310DB96 | call qword ptr ds:[<&_Syserror_map>] |
000000001310DB9C | mov qword ptr ds:[rdi+18],F |
000000001310DBA4 | mov qword ptr ds:[rdi+10],rbx |
000000001310DBA8 | mov byte ptr ds:[rdi],bl |
000000001310DBAA | cmp byte ptr ds:[rax],bl | NULL -> *boom*
000000001310DBAC | je crclient.1310DBBB |
000000001310DBAE | or rbx,FFFFFFFFFFFFFFFF |
000000001310DBB2 | inc rbx |
000000001310DBB5 | cmp byte ptr ds:[rax+rbx],0 |
000000001310DBB9 | jne crclient.1310DBB2 |
000000001310DBBB | mov r8,rbx |
000000001310DBBE | mov rdx,rax |
000000001310DBC1 | mov rcx,rdi |
000000001310DBC4 | call crclient.13106950 |
000000001310DBC9 | mov rbx,qword ptr ss:[rsp+40] |
000000001310DBCE | mov rax,rdi |
000000001310DBD1 | add rsp,30 |
000000001310DBD5 | pop rdi |
000000001310DBD6 | ret |
--- snip ---
Wine source:
https://source.winehq.org/git/wine.git/blob/9d7a710fc0d1a0ecea17a68675d3899aff63ae0c:/dlls/msvcp90/misc.c#l2853
--- snip ---
2853 #if _MSVCP_VER >= 110
2854 /* ?_Syserror_map at std@@YAPBDH at Z */
2855 /* ?_Syserror_map at std@@YAPEBDH at Z */
2856 const char* __cdecl _Syserror_map(int err)
2857 {
2858 int i;
2859
2860 TRACE("(%d)\n", err);
2861
2862 for(i = 0; i < ARRAY_SIZE(syserror_map); i++)
2863 {
2864 if(syserror_map[i].err == err)
2865 return syserror_map[i].str;
2866 }
2867 return NULL;
2868 }
2869 #endif
--- snip ---
Returning NULL for unknown error codes (no mapping found) is not desirable.
Wine should return a string in such cases to avoid crashes.
$ wine --version
wine-6.0-rc3-34-g9d7a710fc0d
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