Thomas Meyer wrote:
Hi.
iTunes version 6 installation fails. i made a log an my guess is that the problem is here:
[snip] trace:ole:TMStubImpl_AddRef (0x7fdcd028)->(ref before=1) trace:ole:stub_manager_int_release after 1 trace:ole:dispatch_rpc Calling apartment thread 0x0000000b... trace:ole:CoWaitForMultipleHandles received message whilst waiting for RPC: 0x0400 trace:ole:TMStubImpl_Invoke ... trace:ole:ITypeLib2_fnAddRef (0x7fd8a348)->ref was 9 trace:ole:ITypeInfo_fnAddRef (0x7fdc8b30)->ref is 3 trace:ole:ITypeInfo_fnGetFuncDesc (0x7fdc8b30) index 0 trace:ole:ITypeInfo_fnGetFuncDesc (0x7fdc8b30) index 1 trace:ole:ITypeInfo_fnGetDocumentation (0x7fdc8b30) memid -1 Name(0x7fbda55c) DocString((nil)) HelpContext((nil)) HelpFile((nil)) trace:ole:ITypeInfo_fnGetNames (0x7fdc8b30) memid=0x60010001 Maxname=10 trace:ole:deserialize_param vt 3 at 0x7fdd193c trace:ole:_invoke Calling 0x4136dc(7ced8370,0000005f,) trace:ole:_invoke returns 00000000 trace:ole:serialize_param (tdesc.vt 3) trace:ole:ITypeInfo_fnRelease (0x7fdc8b30)->(2) trace:ole:ITypeLib2_fnRelease (0x7fd8a348)->(9) trace:ole:TMStubImpl_Invoke returning trace:ole:TMStubImpl_Release (0x7fdcd028)->(ref before=2) trace:ole:apartment_release a0000000b: after = 1 trace:ole:rpc_sendreceive_thread completed with status 0x0 trace:ole:DllMain 0x7f6e0000 0x3 (nil) ole32.dll trace:ole:CoWaitForMultipleHandles -- 0x00000000 trace:ole:RpcChannelBuffer_SendReceive RPC call status: 0x0 trace:ole:RpcChannelBuffer_SendReceive -- 0x00000000 trace:ole:ITypeInfo_fnRelease (0x7fe2e6f0)->(2) trace:ole:ITypeLib2_fnRelease (0x7fdf4758)->(201)
Ok. One of the things i did't figured out till now. What does this xCall thing mean?
trace:ole:xCall -- 0x00000000 trace:ole:CoMarshalInterface (0x775af1b8, {c9ce9778-210c-4cb4-b4f0-f589c3dda00b}, 0x7ce45480, 3, (nil), MSHLFLAGS_TABLESTRONG) trace:ole:CoGetStandardMarshal ({c9ce9778-210c-4cb4-b4f0-f589c3dda00b},0x7ce45480,3,(nil),1,0x7fbde72c) trace:ole:CoMarshalInterface Using standard marshaling trace:ole:CoMarshalInterface Calling IMarshal::MarshalInterace trace:ole:StdMarshalImpl_MarshalInterface (...,{c9ce9778-210c-4cb4-b4f0-f589c3dda00b},...) trace:ole:CoGetPSClsid () riid={c9ce9778-210c-4cb4-b4f0-f589c3dda00b}, pclsid=0x7fbde654 trace:ole:WINE_StringFromCLSID 0x496980->{C9CE9778-210C-4CB4-B4F0-F589C3DDA00B} trace:ole:__CLSIDFromStringA {C9CE9778-210C-4CB4-B4F0-F589C3DDA00B} -> 0x7fbde654 trace:ole:CoGetPSClsid () Returning CLSID={c9ce9778-210c-4cb4-b4f0-f589c3dda00b}
trace:ole:get_facbuf_for_iid CoGetPSClsid hr= 0x00000000 trace:ole:CoGetClassObject CLSID: {c9ce9778-210c-4cb4-b4f0-f589c3dda00b}, IID: {d5f569d0-593b-101a-b569-08002b2dbf7a} trace:ole:WINE_StringFromCLSID 0x7fbde654->{C9CE9778-210C-4CB4-B4F0-F589C3DDA00B} trace:ole:COMPOBJ_DLLList_Add trace:ole:get_inproc_class_object DllGetClassObject hr= 0x80040111
err:ole:CoGetClassObject no class object {c9ce9778-210c-4cb4-b4f0-f589c3dda00b} could be created for for context 0x1 err:ole:marshal_object couldn't get IPSFactory buffer for interface {c9ce9778-210c-4cb4-b4f0-f589c3dda00b}
I guess this is the reason why the installer fails. Maybe i am wrong and this is an error in the application program. but how to determin this?
Yes, this is likely the reason. Let me guess, you are trying with a version of Wine that is more than a week old? Have you tried with the current CVS?
is there a way to explorer all interfaces in an COM object (in the dll file)?
Not really. One way may be to disassemble the DllGetClassObject function, but that would be more trouble than it's worth.
err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80040111 err:ole:CoMarshalInterface Failed to marshal the interface {c9ce9778-210c-4cb4-b4f0-f589c3dda00b}, 80040111 trace:ole:CoMarshalInterface completed with hr 0x80040111
<snip>
by the way: what is an apartment? (i think it has something to do with thread/process, therefore i added the dll names for each Main call)
It is a unit in which COM objects are valid and is equal to or larger than a thread, but smaller than or equal to a process. In practical terms, it means that when you uninitialize an apartment all of the COM objects that it exports are released and can no longer be accessed, and similarly proxies to remote objects are invalidated and just return RPC_E_DISCONNECTED.
Hope this helps, Rob