[Bug 14550] MS Ink demo program fails

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Aug 15 09:21:46 CDT 2008


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





--- Comment #3 from Saulius K. <saulius2 at gmail.com>  2008-08-15 09:21:44 ---
Created an attachment (id=15429)
 --> (http://bugs.winehq.org/attachment.cgi?id=15429)
interesting excerpts from a full debug log

My try to analyse the situation follows.  Test app (BasicRecognition.exe)
initializes COM libraries and Explorer.exe gets launched.  Then test app tries
to create instance of an InkRecognizerContext class.  This way INKOBJ.DLL
(native) gets loaded.  And for some reason new threads of Explorer.exe starts
creating plus entering new apartments (8000cafe) and then last of them waits
for some rpc completion.  The same follows for InkCollector class and then for
InkRectangle class.

After this Explorer.exe tries to instantiate TabletManager class.  As the class
isn't registered as in-proc server, separate process gets launched from the
thread of Explorer:

  0019:trace:ole:create_server activating local server
L"C:\\windows\\system32\\wisptis.exe -Embedding" for
{a5b020fd-e04b-4e67-b65a-e7deed25b2cf}

After the server is launched, the same Explorer thread starts doing
CoWaitForMultipleHandles synchronization for a longer time (~9993 times). 
During it four lines are repeated:

  0019:trace:ole:CoWaitForMultipleHandles (0x00000000, 0x000003e8, 0, (nil),
0x7e5612d8)
  0019:trace:ole:CoWaitForMultipleHandles waiting for rpc completion
  0019:err:ole:CoWaitForMultipleHandles Unexpected wait termination: -1, 87
  0019:trace:ole:CoWaitForMultipleHandles -- 0x8000ffff

Every time since now the function fails with E_UNEXPECTED.  But rarely some
debug info from the main server thread pops in, eg:

  001f:fixme:process:SetProcessShutdownParameters (00000002, 00000000): partial
stub.
  001f:fixme:winstation:OpenInputDesktop (0,0,2000000): stub
  001f:trace:ole:CoInitializeEx ((nil), 0)
  001f:trace:ole:CoInitializeEx () - Initializing the COM libraries
  001f:trace:ole:RunningObjectTableImpl_Initialize 
  001f:trace:ole:apartment_construct creating new apartment, model=0
  001f:trace:ole:apartment_construct Created apartment on OXID 1e0000cafe
  001f:fixme:ole:CoInitializeSecurity
(0x12da70,-1,(nil),(nil),4,3,(nil),0,(nil)) - stub!
  001f:fixme:atl:AtlModuleRegisterWndClassInfoW 0x1027098 0x1027980 0x12db50
semi-stub
  001f:trace:ole:CoRegisterClassObject
({a5b020fd-e04b-4e67-b65a-e7deed25b2cf},0x12db10,0x00000004,0x00000001,0x102cf74)
  001f:trace:ole:CoMarshalInterface (0x12dff8,
{00000001-0000-0000-c000-000000000046}, 0x12db10, 0, (nil),
MSHLFLAGS_TABLESTRONG)
  001f:trace:ole:CoGetStandardMarshal
({00000001-0000-0000-c000-000000000046},0x12db10,0,(nil),1,0x33fcac)
  001f:trace:ole:CoMarshalInterface Using standard marshaling
  001f:trace:ole:CoMarshalInterface Calling IMarshal::MarshalInterace
  001f:trace:ole:StdMarshalImpl_MarshalInterface
(...,{00000001-0000-0000-c000-000000000046},...)
  001f:trace:rpc:RpcServerUseProtseqEpW
(L"ncalrpc",10,L"\\pipe\\OLE_0000001e0000cafe",(nil))
  001f:trace:rpc:RpcServerUseProtseqEpExW
(L"ncalrpc",10,L"\\pipe\\OLE_0000001e0000cafe",(nil),{12,0,0})
  001f:trace:rpc:alloc_serverprotoseq new protseq 0x12e090 created for ncalrpc
  001f:trace:rpc:RPCRT4_CreateConnection connection: 0x12e128
  001f:trace:rpc:rpcrt4_conn_create_pipe listening on
\\.\pipe\lrpc\\pipe\OLE_0000001e0000cafe
  001f:trace:ole:RemUnknown_QueryInterface
(0x12e100)->({00000131-0000-0000-c000-000000000046}, 0x33f990)
  001f:trace:ole:RemUnknown_AddRef 0x12e100 before: 1
  001f:trace:ole:CoGetPSClsid () riid={00000131-0000-0000-c000-000000000046},
pclsid=0x33f998
  001f:trace:ole:WINE_StringFromCLSID
0x7edcbe40->{00000131-0000-0000-C000-000000000046}
  001f:trace:ole:__CLSIDFromString L"{00000320-0000-0000-C000-000000000046}" ->
0x33f998
  001f:trace:ole:CoGetPSClsid () Returning
CLSID={00000320-0000-0000-c000-000000000046}
  001f:trace:ole:CoGetClassObject 
      CLSID:  {00000320-0000-0000-c000-000000000046},
      IID:    {d5f569d0-593b-101a-b569-08002b2dbf7a}
  001f:trace:ole:WINE_StringFromCLSID
0x33f998->{00000320-0000-0000-C000-000000000046}
  001f:trace:ole:apartment_getclassobject calling ole32!DllGetClassObject
  001f:trace:ole:PSFacBuf_CreateStub
({00000131-0000-0000-c000-000000000046},0x12e100,0x33f994)
  001f:trace:ole:RemUnkStub_Connect (0x12e1e0)->Connect(0x12e100)
  001f:trace:ole:RemUnknown_AddRef 0x12e100 before: 2
  001f:trace:ole:get_stub_manager_from_object not found for object 0x12e100
  001f:trace:ole:marshal_object constructing new stub manager
  001f:trace:ole:RemUnknown_AddRef 0x12e100 before: 3
  001f:trace:ole:new_stub_manager Created new stub manager (oid=1) at 0x12e1f8
for object with IUnknown 0x12e100
  001f:trace:ole:stub_manager_new_ifstub oid=1, stubbuffer=0x12e1e0,
iptr=0x12e100, iid={00000131-0000-0000-c000-000000000046}
  001f:trace:ole:RemUnkStub_AddRef (0x12e1e0)->AddRef()
  001f:trace:ole:RemUnknown_AddRef 0x12e100 before: 4
  001f:trace:ole:stub_manager_new_ifstub ifstub 0x12e298 created with ipid
{ffffffff-ffff-ffff-feca-00001e000000}
  001f:trace:ole:RemUnkStub_Release (0x12e1e0)->Release()
  001f:trace:ole:RemUnknown_Release 0x12e100 after: 4
  001f:trace:ole:stub_manager_ext_addref added 5 refs to 0x12e1f8 (oid 1), rc
is now 5
  001f:trace:ole:RPC_RegisterInterface ({00000131-0000-0000-c000-000000000046})
  001f:trace:ole:RPC_RegisterInterface Creating new interface
  001f:trace:rpc:RpcServerRegisterIfEx (0x12e2fc,(null),(nil),3,1234,(nil))
  001f:trace:rpc:RpcServerRegisterIf2
(0x12e2fc,(null),(nil),3,1234,4294967295,(nil))
  001f:trace:rpc:RpcServerRegisterIf2  interface id:
{00000131-0000-0000-c000-000000000046} 0.0
  001f:trace:rpc:RpcServerRegisterIf2  transfer syntax:
{00000000-0000-0000-0000-000000000000} 0.0
  001f:trace:rpc:RpcServerRegisterIf2  dispatch table: 0x7edddb40
  001f:trace:rpc:RpcServerRegisterIf2   dispatch table count: 1
  001f:trace:rpc:RpcServerRegisterIf2    entry 0: 0x7eda2870
  001f:trace:rpc:RpcServerRegisterIf2   reserved: 0
  001f:trace:rpc:RpcServerRegisterIf2  protseq endpoint count: 0
  001f:trace:rpc:RpcServerRegisterIf2  default manager epv: (nil)
  001f:trace:rpc:RpcServerRegisterIf2  interpreter info: (nil)
  001f:trace:rpc:RPCRT4_start_listen
  orMultipleHandles waiting for rpc completion

(note: the last line got corrupted for some reason)

and

  0020:trace:ole:DllMain 0x7ed50000 0x2 (nil)
  0020:trace:rpc:RPCRT4_server_thread (the_arg == ^0x12e090)
  001f:trace:ole:stub_manager_int_release after 1 
  001f:trace:ole:RemUnknown_Release 0x12e100 after: 3
  001f:trace:ole:CoGetPSClsid () riid={00000001-0000-0000-c000-000000000046},
pclsid=0x33fbb8
  001f:trace:ole:WINE_StringFromCLSID
0x7edd04a4->{00000001-0000-0000-C000-000000000046}
  001f:trace:ole:__CLSIDFromString L"{00000320-0000-0000-C000-000000000046}" ->
0x33fbb8
  001f:trace:ole:CoGetPSClsid () Returning
CLSID={00000320-0000-0000-c000-000000000046}
  001f:trace:ole:CoGetClassObject 
      CLSID:  {00000320-0000-0000-c000-000000000046},
      IID:    {d5f569d0-593b-101a-b569-08002b2dbf7a}
  001f:trace:ole:WINE_StringFromCLSID
0x33fbb8->{00000320-0000-0000-C000-000000000046}

and

  001f:trace:ole:PSFacBuf_CreateStub
({00000001-0000-0000-c000-000000000046},0x12db10,0x33fbb4)
  001f:trace:ole:get_stub_manager_from_object not found for object 0x12db10
  001f:trace:ole:marshal_object constructing new stub manager
  001f:trace:ole:new_stub_manager Created new stub manager (oid=2) at 0x12e3f0
for object with IUnknown 0x12db10
  001f:trace:ole:stub_manager_new_ifstub oid=2, stubbuffer=0x12e3d8,
iptr=0x12db10, iid={00000001-0000-0000-c000-000000000046}
  001f:trace:rpc:UuidCreate {3cf033a0-54bc-11dd-e181-000b5dcca6e6}
  001f:trace:ole:stub_manager_new_ifstub ifstub 0x12e490 created with ipid
{00000001-001f-001e-e181-000b5dcca6e6}
  001f:trace:ole:stub_manager_ext_addref added 1 refs to 0x12e3f0 (oid 2), rc
is now 1
  001f:trace:ole:RPC_RegisterInterface ({00000001-0000-0000-c000-000000000046})
  001f:trace:ole:RPC_RegisterInterface Creating new interface
  001f:trace:rpc:RpcServerRegisterIfEx (0x12e4f4,(null),(nil),3,1234,(nil))
  001f:trace:rpc:RpcServerRegisterIf2
(0x12e4f4,(null),(nil),3,1234,4294967295,(nil))
  001f:trace:rpc:RpcServerRegisterIf2  interface id:
{00000001-0000-0000-c000-000000000046} 0.0
  001f:trace:rpc:RpcServerRegisterIf2  transfer syntax:
{00000000-0000-0000-0000-000000000000} 0.0
  001f:trace:rpc:RpcServerRegisterIf2  dispatch table: 0x7edddb40
  001f:trace:rpc:RpcServerRegisterIf2   dispatch table count: 1
  001f:trace:rpc:RpcServerRegisterIf2    entry 0: 0x7eda2870
  001f:trace:rpc:RpcServerRegisterIf2   reserved: 0
  001f:trace:rpc:RpcServerRegisterIf2  protseq endpoint count: 0
  001f:trace:rpc:RpcServerRegisterIf2  default manager epv: (nil)
  001f:trace:rpc:RpcServerRegisterIf2  interpreter info: (nil)
  001f:trace:rpc:RPCRT4_start_listen   
  001f:trace:ole:stub_manager_int_release after 1
  001f:trace:ole:CoMarshalInterface completed with hr 0x00000000

and

  0021:trace:ole:DllMain 0x7ed50000 0x2 (nil)
  0021:trace:ole:local_server_thread Starting threader for
{a5b020fd-e04b-4e67-b65a-e7deed25b2cf}.
  0021:trace:ole:WINE_StringFromCLSID
0x12e020->{A5B020FD-E04B-4E67-B65A-E7DEED25B2CF}

and

  0022:trace:ole:CoInitializeEx ((nil), 0)
  0022:trace:ole:apartment_get_or_create entering the multithreaded apartment
1e0000cafe
  0022:trace:ole:apartment_addref 1e0000cafe: before = 1
  0022:fixme:winstation:OpenInputDesktop (0,0,2000000): stub

After the last failing call to CoWaitForMultipleHandles the same thread (0019)
of Explorer (which was in wait) starts doing some unmarshalling:

  0019:trace:ole:RPC_GetLocalClassObject waiting for
L"\\\\.\\pipe\\{A5B020FD-E04B-4E67-B65A-E7DEED25B2CF}"
  0021:trace:ole:local_server_thread marshalling IClassFactory to client
  0019:trace:ole:RPC_GetLocalClassObject read marshal id from pipe
  0019:trace:ole:RPC_GetLocalClassObject unmarshalling classfactory
  0019:trace:ole:CoUnmarshalInterface (0x1336d8,
{00000001-0000-0000-c000-000000000046}, 0x7e561474)
  0019:trace:ole:get_unmarshaler_from_stream Using standard unmarshaling
  0019:trace:ole:StdMarshalImpl_UnmarshalInterface  
(...,{00000001-0000-0000-c000-000000000046},....)
  0019:trace:ole:StdMarshalImpl_UnmarshalInterface Treating unmarshal from OXID
1e0000cafe as inter-process
  0019:trace:ole:unmarshal_object stdobjref:
          flags = 0000
          cPublicRefs = 0
          oxid = 1e0000cafe
          oid = 2
          ipid = {00000001-001f-001e-e181-000b5dcca6e6}

This is followed by a quite long RPC negotiation and communication, which end
up in an error at creating instance of a class factory.  IID used here stands
for ITabletManagerP interface:

  0024:trace:ole:apartment_addref 1e0000cafe: before = 3
  0024:trace:ole:CFStub_Invoke
->CreateInstance({663c73a5-8715-4499-b809-43689a93086b})
  0024:fixme:ole:CFStub_Invoke Failed to create an instance of
{663c73a5-8715-4499-b809-43689a93086b}
  0024:trace:ole:ServerRpcChannelBuffer_GetBuffer
(0x12e4d0)->(0x12ea88,{00000001-0000-0000-c000-000000000046})
  0024:trace:rpc:I_RpcGetBuffer (0x12ea88): BufferLength=8
  0024:trace:rpc:I_RpcGetBuffer Buffer=0x12e7f0
  0024:trace:ole:ServerRpcChannelBuffer_GetBuffer -- 0
  0024:trace:ole:apartment_release 1e0000cafe: after = 3
  0024:trace:ole:apartment_release 1e0000cafe: after = 2
  0024:warn:rpc:process_request_packet exception caught with code 0x80004005 =
-2147467259
  0024:trace:rpc:process_request_packet freeing Buffer=0x12ecd0
  0024:trace:rpc:I_RpcFreeBuffer (0x12ea88) Buffer=0x12e7f0
  0025:trace:rpc:RPCRT4_ReceiveWithAuth buffer length = 0
  0025:err:rpc:I_RpcReceive we got fault packet with status 0x80004005
  0025:trace:ole:rpc_sendreceive_thread completed with status 0x80004005
  0026:trace:rpc:RPCRT4_ReceiveWithAuth (0x12eb08, 0x7e0c3a28, 0x12eb98, (nil))
  0026:trace:rpc:RPCRT4_receive_fragment (0x12eb08, 0x7e0c3a28, 0x7e0c39c4)
  0027:trace:ole:DllMain 0x7eb40000 0x2 (nil)
  0019:trace:ole:ClientRpcChannelBuffer_SendReceive RPC call status: 0x80004005
  0019:trace:ole:ClientRpcChannelBuffer_SendReceive hrFault = 0x00000000
  0019:trace:ole:ClientRpcChannelBuffer_SendReceive -- 0x80004005
  0019:fixme:ole:CFProxy_CreateInstance IRpcChannelBuffer_SendReceive failed
with 80004005?

After which the test app fails:

  0019:fixme:ole:CoCreateInstance no instance created for interface
{663c73a5-8715-4499-b809-43689a93086b} of class {a5b020fd-e04b-
4e67-b65a-e7deed25b2cf}, hres is 0x80004005
  0009:trace:ole:CoWaitForMultipleHandles (0x00000000, 0xffffffff, 1, 0x560e28,
0x32f62c)
  0009:trace:ole:CoWaitForMultipleHandles waiting for rpc completion or window
message
  0009:trace:ole:CoWaitForMultipleHandles -- 0x00000000
  001a:err:ole:CoWaitForMultipleHandles Unexpected wait termination: 192, 0
  001a:trace:ole:CoWaitForMultipleHandles -- 0x8000ffff
  001a:trace:ole:CoUninitialize ()
  001a:trace:ole:apartment_release 80000cafe: after = 4
  0009:trace:ole:DllMain (0x7e9f0000,0,0x1)
  0009:trace:ole:DllMain 0x7eb40000 0x0 0x1

Would someone suggest some ideas on debugging Ink Recognition app further? 
Rob, anyone?
Observed TIDs relation to processes:

0009 - BasicRecognition.exe (test app)

0017 - Explorer.exe
0018,
0019,
001a,
001b,
001c,
001d

001f - Wisptis.exe (Out-of-process COM server)
0020,
0021,
0022,
0023,
0024,
0025,
0026,
0027


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