What happens to my COM server-side object when clients die unexpectedly?

Raymond Chen

Suppose you have a COM server object that runs out-of-process. A client connects to the COM server and creates an object. And then the client crashes. What happens to the server object? It will get released eventually. COM periodically checks whether the clients are still alive, and it runs down interfaces from dead clients. Run-down (often spelled rundown) is a technical term used by COM to refer to cleaning up abandoned objects. Knowledge Base 171414 describes the mechanism in some detail. (There are a bunch of optimizations in play here. You can read the Knowledge Base article to learn about some of them.) The short version is that every two minutes, the COM client pings the server to say, “Hey, I’m still alive.” If the COM server doesn’t hear from the client for six minutes, then it assumes that the client is dead and runs down the objects for that client.

Therefore, if a client dies, your server object will be cleaned up between six and twelve (eight?) minutes later.

0 comments

Discussion is closed.

Feedback usabilla icon