 <p>That's a vulnerability that exists whenever you have two or processes interop with each other. One of them dies and the other one keeps running, unaware that there will never be another request again from the dead process. In the case of an out-of-process COM server, nobody is going to call IUnknown::Release() to get the object destroyed. COM does not otherwise have a built-in fix for that problem. An in-process server doesn't have this problem, the crashed process takes the server out as well. Which is a problem too, no nice cleanup, but easier to deal with.</p> <p>Getting the server to recover from this is something you'll have to add yourself. You could, say, have the client pass its process ID so that the server can obtain the process handle and detect when the client falls over with WaitForMultipleHandles(). Assuming they both live on the machine, that's certainly not a COM requirement and not something the server can find out.</p>