Crash in urlmon.dll - CInet::ReleaseTransAndBindInfo() - how prevent/handle?

Giganews Newsgroups
Subject: Crash in urlmon.dll - CInet::ReleaseTransAndBindInfo() - how prevent/handle?
Posted by:  Chris Shearer Cooper (…
Date: Wed, 13 Aug 2008

I've got an application running, it creates a few threads, each thread
creates a COM object, each COM object creates some threads, each
thread downloads some web pages.  That structure is, unfortunately,
not something I am allowed to make major changes to.

The problem is that every once in a while, it crashes.  The latest
crash I got a minidump file from the QA folks, and by enabling the
symbol server in Visual Studio 2005, I was able to find out why.

The crash is in urlmon.dll, in CINet::ReleaseTransAndBindInfo() + 0x21
The entire rest of the stack (going up) is
urlmon.dll!CINet::Callback() + 0x47b bytes
wininet.dll!_InternetIndicateStatus@12() + 0x1ab03 bytes
wininet.dll!HANDLE_OBJECT::~HANDLE_OBJECT() + 0x12be2 bytes
winnet.dll!HTTP_REQUEST_HANDLE_OBJECT::`scalar destructing
destructor'() + 0xd bytes
wininet.dll!HANDLE_OBJECT::Dereference() + 0x8c6f bytes
wininet.dll!_DereferenceObject@4() + 0x21 bytes
wininet.dll!CFsm::RunWorkItem() + 0xc3 bytes
shlwapi.dll!ExecuteWorkItem() + 0x1d bytes
ntdll.dll!_RtlpWorkerCallout@16() + 0x65 bytes
ntdll.dll!_RtlpExecuteWorkerRequest@12() + 0x1a bytes
ntdll.dll!_RtlpApcCallout@16() + 0x11 bytes
ntdll.dll!_RtlpWorkerThread@4() + 0x16ebc bytes
kernel32.dll!_BaseThreadStart@8() + 0x37 bytes

So I'm guessing this is some thread that I didn't directly create,
that is performing some Internet function for me.

1) Any ideas how to prevent this from happening?
2) Is this a known issue?
3) Any way to catch this when it does happen and not let it crash my
whole program?  Or at least have the program die quietly - it has no
GUI, it's a worker program running "in the background", my main
program has the GUI.