[Bug 30512] Tencent Messenger 2008/2009 crashes with initialization failure due to atl80.dll AtlCreateRegistrar being a stub (registration of COM servers failed at install time)

wine-bugs at winehq.org wine-bugs at winehq.org
Wed Apr 25 14:20:54 CDT 2012


http://bugs.winehq.org/show_bug.cgi?id=30512

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |Installer
                 CC|                            |focht at 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 at 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 at 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/7bffd907908a18a16b34d16245c817ec0d605d53:/dlls/atl80/atl80.c#l27

--- 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

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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