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