http://bugs.winehq.org/show_bug.cgi?id=30512
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |Installer CC| |focht@gmx.net Component|-unknown |atl Summary|TM2009 crashes with |Tencent Messenger 2008/2009 |initialization failure |crashes with initialization | |failure due to atl80.dll | |AtlCreateRegistrar being a | |stub (registration of COM | |servers failed at install | |time)
--- Comment #5 from Anastasius Focht focht@gmx.net 2012-04-25 14:20:54 CDT --- Hello,
confirming.
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/Tencent/TM2008/Bin ... $ WINEDEBUG=+tid,+seh,+relay,+snoop,+atl wine ./TM.exe ... 0024:CALL Common.?CreateObjectFromDllFile@Com@Util@@YGJPB_WABU_GUID@@1PAPAXPAUIUnknown@@@Z(<unknown, check return>) ret=00402d21 0024:Call KERNEL32.GetModuleHandleW(0040bc20 L"Common.dll") ret=30002bc7 0024:Ret KERNEL32.GetModuleHandleW() retval=30000000 ret=30002bc7 0024:Call KERNEL32.GetProcAddress(30000000,30187af0 "DllGetClassObject") ret=30002c2d 0024:Ret KERNEL32.GetProcAddress() retval=00358415 ret=30002c2d 0024:CALL Common.DllGetClassObject(<unknown, check return>) ret=30002c47 0024:Call atl.AtlModuleGetClassObject(301fa000,0040bc6c,301bdfe0,0032fa98) ret=3000962a 0024:trace:atl:AtlModuleGetClassObject 0x301fa000 {2289d8b7-c29a-47ae-9a7e-7b784e502b30} {00000001-0000-0000-c000-000000000046} 0x32fa98 0024:warn:atl:AtlModuleGetClassObject no class object found for {2289d8b7-c29a-47ae-9a7e-7b784e502b30} 0024:Ret atl.AtlModuleGetClassObject() retval=80040111 ret=3000962a 0024:RET Common.DllGetClassObject(0040bc6c,301bdfe0,0032fa98) retval=80040111 ret=30002c47 --- snip ---
"{2289d8b7-c29a-47ae-9a7e-7b784e502b30}" lives in "common.dll" COM inproc server.
If we manually try to register it:
--- snip --- $ wine regsvr32 common.dll fixme:atl80:AtlCreateRegistrar (0x32fd1c) stub Failed to register DLL common.dll --- snip ---
Same failure probably at installer time. Tracing installer indeed yields:
--- snip --- ... 0020:Call KERNEL32.CreateProcessW(00000000,019dd3b0 L""C:\windows\system32\regsvr32.exe" /s Common.dll",00000000,00000000,00000000,00000000,00000000,019dd7c0 L"C:\Program Files\Tencent\TM2008\Bin",019dcf40,019dcf2c) ret=0041c3cc ... 002a:Call KERNEL32.__wine_kernel_init() ret=7bc530d2 ... 0020:Ret KERNEL32.CreateProcessW() retval=00000001 ret=0041c3cc ... 002a:Ret PE DLL (proc=0x3016fb00,module=0x30000000 L"Common.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1 002a:Ret KERNEL32.LoadLibraryExA() retval=30000000 ret=7effd6c2 002a:Call KERNEL32.GetProcAddress(30000000,7effe10e "DllRegisterServer") ret=7effd714 002a:Ret KERNEL32.GetProcAddress() retval=3000a140 ret=7effd714 002a:Call KERNEL32.GetThreadLocale() ret=30009f7e 002a:Ret KERNEL32.GetThreadLocale() retval=00000409 ret=30009f7e 002a:Call KERNEL32.SetThreadLocale(00000800) ret=30009f8b 002a:Ret KERNEL32.SetThreadLocale() retval=00000001 ret=30009f8b 002a:Call atl80.AtlCreateRegistrar(0033fd1c) ret=30009906 002a:fixme:atl80:AtlCreateRegistrar (0x33fd1c) stub 002a:Ret atl80.AtlCreateRegistrar() retval=80004001 ret=30009906 002a:Call KERNEL32.SetThreadLocale(00000409) ret=30009ff4 002a:Ret KERNEL32.SetThreadLocale() retval=00000001 ret=30009ff4 002a:Call KERNEL32.ExitProcess(ffffffff) ret=7effdedb ... --- snip ---
Source: http://source.winehq.org/git/wine.git/blob/7bffd907908a18a16b34d16245c817ec0...
--- snip --- 27 HRESULT WINAPI AtlCreateRegistrar(IRegistrar** ppReg) 28 { 29 FIXME("(%p) stub\n", ppReg); 30 return E_NOTIMPL; 31 } --- snip ---
Workaround: 'winetricks -q vcrun2005' and set 'atl80.dll' to '(native,builtin)' before running the installer.
Additionally:
--- snip --- err:module:import_dll Library MFC42.DLL (which is needed by L"C:\Program Files\Tencent\TM2008\Bin\TSEH.DAT") not found --- snip ---
'winetricks -q mfc42'
$ du -sh TM2009Beta3.4_chs.exe 19M TM2009Beta3.4_chs.exe
$ sha1sum TM2009Beta3.4_chs.exe 7af2000ffdc6fa68450065101e089e61f80ddff8 TM2009Beta3.4_chs.exe
$ wine --version wine-1.5.2-250-gdc830aa
Regards