Now that we're counting ProgressInputStream leaks, we do indeed seem
to be leaking them, on IE. In particular,
testPostRedirectBackToCache() in test/testcases/localserver_tests.js
is one test case that has a reliable leak. I think the key factors in
this case is that we're doing a HTTP POST to
/testcases/cgi/server_redirect.py, which as its name suggests, returns
a 302. Changing that HttpRequest to point to a URL that 404's, for
example, doesn't leak.

I'm poking around in localserver/ie/http_request_ie.cc, but it's not
obvious to me what's going on, since I'm unfamiliar with urlmon, or
really the whole IMoniker thing. For example, should we be responsible
for calling ReleaseBindInfo at any point (currently we don't)? Does
calling BindToStorage with a CComPtr<IStream> be a possible source of
an unbalanced AddRef to ProgressInputStream and do we need to unbind
storage at some point? Is the fact that we're pushing the
ProgressInputStream into a stgmedData, in IEHttpRequest::GetBindInfo,
be related to this leak?

I can keep poking around, but I was just wondering if you (Michael),
or anyone else, had any hints.

Reply via email to