I think Robs theory is right, but IMHO we need more tracing in this part of the code anyway. Try applying this patch and resending the log.
I suspect you'll get
err:proxy_manager_create_ifproxy: Could not locate PSFactoryBuffer for IID {00000000-0000-0000-C000-000000000046}
But let's find out.
thanks -mike
--- dlls/ole32/marshal.c (revision 108) +++ dlls/ole32/marshal.c (local) @@ -350,13 +350,21 @@ static HRESULT proxy_manager_create_ifpr &ifproxy->proxy, &ifproxy->iface); IPSFactoryBuffer_Release(psfb); } + else + ERR("Could not locate PSFactoryBuffer for iid %s\n", debugstr_guid(riid));
if (hr == S_OK) + { hr = IRpcProxyBuffer_Connect(ifproxy->proxy, This->chan); + if (FAILED(hr)) ERR("Could not connect ifproxy to RPC channel\n"); + }
/* get at least one external reference to the object to keep it alive */ if (hr == S_OK) + { hr = ifproxy_get_public_ref(ifproxy); + if (FAILED(hr)) ERR("Could not get public ref on ifproxy\n"); + }
if (hr == S_OK) { @@ -369,6 +377,8 @@ static HRESULT proxy_manager_create_ifpr else ifproxy_destroy(ifproxy);
+ if (FAILED(hr)) ERR("PANIC: ifproxy construction failed, expect failure now ...\n"); + return hr; }