Holy cow, I wrote a book!
The dllhost.exe process goes by the name
COM Surrogate and the only time you're likely even to notice
its existence is when it crashes and you get the message
COM Surrogate has stopped working.
What is this COM Surrogate and why does it keep crashing?
The COM Surrogate is a fancy name for
Sacrificial process for a COM object that is run outside of
the process that requested it.
Explorer uses the COM Surrogate when extracting thumbnails,
If you go to a folder with thumbnails enabled,
Explorer will fire off a COM Surrogate and use it to compute
the thumbnails for the documents in the folder.
It does this because Explorer has learned not to trust thumbnail extractors;
they have a poor track record for stability.
Explorer has decided to absorb the performance penalty
in exchange for the improved reliability resulting in moving
these dodgy bits of code out of the main Explorer process.
When the thumbnail extractor crashes, the crash destroys
the COM Surrogate process instead of Explorer.
In other words, the COM Surrogate is the
I don't feel good about this code, so I'm going to ask COM
to host it in another process.
That way, if it crashes, it's the COM Surrogate sacrificial process that
crashes instead of me process.
And when it crashes, it just means that Explorer's worst fears were realized.
if you get these types of crashes when browsing folders containing
video or media files,
the problem is most likely a flaky codec.
Now that you know what the COM Surrogate does, you can answer
this question from a customer:
I'm trying to delete a file, but I'm told that "The action can't
be completed because the file is open in COM Surrogate."
What is going on?