--- In [email protected], "entropyreduction" 
<alancampbelllists+ya...@...> wrote:

> CoUninitialize call is definitely the problem: in debugger
> when I step through the one thread's code, it calls CoUninitialize in the 
> special case where m_pCComActionAbstract->doIt() returns false, only done by 
> the polymorphic version of CComActionRealeaseAll::doIt()
> (called when you invoke release_all or when you unload.

A bit of googling got me:


"You must release all COM interface pointers before calling
CoUninitialize. Most likely you are not doing so. In particular, your
dialog class may have some member interface pointers. There might also
be leaked pointers or other unterminated COM activity."

and

"As mentioned, CoUninitialize will tear down all COM objects.  While it
is difficult to know the exact reason, you are blocking your message
pump, and if there is any incoming RPC during the cleanup, it will
hang.  Definitely never call CoInit/CoUnint when handling messages."


See3ms to be sone debate about whether message pump is necessary.



Reply via email to