out-of-process COM design

Bill Medland billmedland at mercuryspeed.com
Sat Dec 18 10:45:46 CST 2004


On December 18, 2004 08:10 am, Mike Hearn wrote:
> On Sat, 2004-12-18 at 07:46 -0800, Bill Medland wrote:
> > 0013:trace:ole:listener_thread Process listener thread starting on
> > (\\.\pipe\WINE_OLE_StubMgr_0000001000000011)
>
> ...
>
> > 0009:fixme:ole:PIPE_GetNewPipeBuf Could not open named pipe
> > \\.\pipe\WINE_OLE_StubMgr_0000001000000014, le is 2
>
> Well, now we have a variation on the same problem. The apartments are
> getting mixed up, I suspect because Robs patch creates a new apartment
> but we still don't create a new listener thread for each apt (rather
> it's still half process-scoped).
>
> We need to make the listener_thread properly apartment-scoped.
>
> What does the trace+backtrace of the crash with my patch look like?
0009:trace:ole:WINE_StringFromCLSID 0x456ed8->{B6B35894-DD6F-11D3-84AC-00C04F0E1B46}
0009:trace:ole:CoGetClassObject 
	CLSID:	{b6b35894-dd6f-11d3-84ac-00c04f0e1b46},
	IID:	{00000001-0000-0000-c000-000000000046}
0009:warn:ole:CoGetClassObject class {B6B35894-DD6F-11D3-84AC-00C04F0E1B46} not registered inproc
0009:trace:ole:create_marshalled_proxy rclsid={b6b35894-dd6f-11d3-84ac-00c04f0e1b46}, iid={00000001-0000-0000-c000-000000000046}
0009:trace:ole:WINE_StringFromCLSID 0x456ed8->{B6B35894-DD6F-11D3-84AC-00C04F0E1B46}
0009:trace:ole:WINE_StringFromCLSID 0x456ed8->{B6B35894-DD6F-11D3-84AC-00C04F0E1B46}
0009:trace:ole:create_server activating local server 'L"G:\\runtime\\a4wsignonmgr.exe -Embedding"' for {B6B35894-DD6F-11D3-84AC-00C04F0E1B46}
0014:trace:ole:DllMain 0x409e0000 0x1 0x1
0009:warn:ole:create_marshalled_proxy Could not open named pipe to broker \\.\pipe\{B6B35894-DD6F-11D3-84AC-00C04F0E1B46}, le is 2
0014:trace:ole:DllMain (0x40ab0000,1,0x1)
0014:trace:ole:CoInitializeEx ((nil), 2)
0014:trace:ole:CoInitializeEx () - Initializing the COM libraries
0014:trace:ole:RunningObjectTableImpl_Initialize ()
0014:trace:ole:WINE_StringFromCLSID 0x41f320->{A2086A6A-3F3E-457C-8102-A4F99AD7C2DA}
0014:trace:ole:CoRegisterClassObject ({b6b35894-dd6f-11d3-84ac-00c04f0e1b46},0x42130140,0x00000004,0x00000001,0x41f094)
0016:trace:ole:listener_thread Process listener thread starting on (\\.\pipe\WINE_OLE_StubMgr_0000001300000014)
0009:warn:ole:create_marshalled_proxy Could not open named pipe to broker \\.\pipe\{B6B35894-DD6F-11D3-84AC-00C04F0E1B46}, le is 2
0009:warn:ole:create_marshalled_proxy Could not open named pipe to broker \\.\pipe\{B6B35894-DD6F-11D3-84AC-00C04F0E1B46}, le is 2
0017:trace:ole:_LocalServerThread Starting threader for {b6b35894-dd6f-11d3-84ac-00c04f0e1b46}.
0017:trace:ole:WINE_StringFromCLSID 0x40246150->{B6B35894-DD6F-11D3-84AC-00C04F0E1B46}
0017:trace:ole:_LocalServerThread marshalling IClassFactory to client
0017:trace:ole:CoMarshalInterface (0x402372b8, {00000001-0000-0000-c000-000000000046}, 0x42130140, 0, (nil), 0)
0017:trace:ole:CoGetStandardMarshal ({00000001-0000-0000-c000-000000000046},0x42130140,0,(nil),0,0x42641fd0)
0017:trace:ole:CoMarshalInterface Using standard marshaling
0017:trace:ole:CoMarshalInterface Calling IMarshal::MarshalInterace
0017:trace:ole:StdMarshalImpl_MarshalInterface (...,{00000001-0000-0000-c000-000000000046},...)
0017:trace:ole:CoGetPSClsid () riid={00000001-0000-0000-c000-000000000046}, pclsid=0x42641f64
0017:trace:ole:WINE_StringFromCLSID 0x40a22274->{00000001-0000-0000-C000-000000000046}
0017:trace:ole:__CLSIDFromStringA {00000320-0000-0000-C000-000000000046} -> 0x42641f64
0017:trace:ole:CoGetPSClsid () Returning CLSID={00000320-0000-0000-c000-000000000046}
0017:trace:ole:WINE_StringFromCLSID 0x42641f64->{00000320-0000-0000-C000-000000000046}
0017:trace:ole:CoGetClassObject 
	CLSID:	{00000320-0000-0000-c000-000000000046},
	IID:	{d5f569d0-593b-101a-b569-08002b2dbf7a}
0017:trace:ole:COMPOBJ_DLLList_Add 
0017:trace:ole:PSFacBuf_CreateStub ({00000001-0000-0000-c000-000000000046},0x42130140,0x42641f50)
0009:trace:ole:CoUnmarshalInterface (0x40246d60, {00000001-0000-0000-c000-000000000046}, 0x406ef5dc)
0009:trace:ole:get_unmarshaler_from_stream Using standard unmarshaling
0009:trace:ole:StdMarshalImpl_UnmarshalInterface (...,{00000001-0000-0000-c000-000000000046},....)
0009:trace:ole:CoGetPSClsid () riid={00000001-0000-0000-c000-000000000046}, pclsid=0x406ef0d8
0009:trace:ole:WINE_StringFromCLSID 0x409a5274->{00000001-0000-0000-C000-000000000046}
0017:trace:ole:_LocalServerThread done marshalling IClassFactory
0009:trace:ole:__CLSIDFromStringA {00000320-0000-0000-C000-000000000046} -> 0x406ef0d8
0009:trace:ole:CoGetPSClsid () Returning CLSID={00000320-0000-0000-c000-000000000046}
0009:trace:ole:WINE_StringFromCLSID 0x406ef0d8->{00000320-0000-0000-C000-000000000046}
0009:trace:ole:CoGetClassObject 
	CLSID:	{00000320-0000-0000-c000-000000000046},
	IID:	{d5f569d0-593b-101a-b569-08002b2dbf7a}
0009:trace:ole:COMPOBJ_DLLList_Add 
0009:trace:ole:CFProxy_CreateInstance ((nil),{00000000-0000-0000-c000-000000000046},0x406ef60c)
0009:trace:ole:PipeBuf_GetBuffer (0x406ef588,{00000001-0000-0000-c000-000000000046})
0009:trace:ole:PipeBuf_SendReceive ()
0018:trace:ole:_StubReaderThread STUB reader thread 13
0018:trace:ole:CFStub_Invoke ->CreateInstance({00000000-0000-0000-c000-000000000046})
0018:trace:ole:CoMarshalInterface (0x40278858, {00000000-0000-0000-c000-000000000046}, 0x42130124, 0, (nil), 0)
0018:trace:ole:CoGetStandardMarshal ({00000000-0000-0000-c000-000000000046},0x42130124,0,(nil),0,0x42743024)
0018:trace:ole:CoMarshalInterface Using standard marshaling
0018:trace:ole:CoMarshalInterface Calling IMarshal::MarshalInterace
0018:trace:ole:StdMarshalImpl_MarshalInterface (...,{00000000-0000-0000-c000-000000000046},...)
wine: Unhandled exception (thread 0018), starting debugger...
Backtrace:
=>1 0x40901a13 StdMarshalImpl_MarshalInterface+0xa3(iface=0x40247148, pStm=0x40247100, riid=0x42a84138, pv=0x42480180, dwDestContext=0x0, pvDestContext=0x0, mshlflags=0x0) [/home/cvswine/wine/dlls/ole32/compobj_private.h:180] in ole32 (0x42a83ff4)
  2 0x40902b07 CoMarshalInterface+0x227(pStream=0x40247100, riid=0x42a84138, pUnk=0x42480180, dwDestContext=0x0, pvDestContext=0x0, mshlFlags=0x0) [/home/cvswine/wine/dlls/ole32/marshal.c:719] in ole32 (0x42a840a4)
  3 0x40908cff CFStub_Invoke+0x2e3(iface=0x40246fe8, msg=0x42a84170, chanbuf=0x0) [/home/cvswine/wine/dlls/ole32/oleproxy.c:178] in ole32 (0x42a84154)
  4 0x4090acf2 COM_InvokeAndRpcSend+0x92(req=0x40247088) [/home/cvswine/wine/dlls/ole32/rpc.c:346] in ole32 (0x42a841ac)
  5 0x4090bc9f _StubReaderThread+0xab(param=0x40246e90) [/home/cvswine/wine/dlls/ole32/rpc.c:745] in ole32 (0x42a841c4)
  6 0x40396593 THREAD_Start+0xef(ptr=0x40246f70) [/home/cvswine/wine/dlls/kernel/thread.c:107] in kernel32 (0x42a84298)
  7 0x400c314f start_thread+0x14b(info=0x40246f90) [/home/cvswine/wine/dlls/ntdll/thread.c:201] in ntdll (0x42a84ad4)
  8 0x40044941  ?? +0x1b1 in libpthread.so.0 (0x42a84bd4)
  9 0x420da1ca  ?? +0x3a in libc.so.6 (0x00000000)
Wine-dbg>

-- 
Bill Medland
mailto:billmedland at mercuryspeed.com
http://webhome.idirect.com/~kbmed




More information about the wine-devel mailing list