The case of Explorer calling into an unloaded DLL while trying to run down a reference to it

1 · Raymond Chen · Aug. 14, 2020, 2:20 p.m.
There was a large number of crashes in Explorer that were tracked back to attempting to release a COM object that belonged to a DLL that was no longer in memory. A typical call stack at the crash looked like this: combase!<lambda_...>::operator()+0x9e combase!ObjectMethodExceptionHandlingAction<lambda_...>+0x1b combase!CStdIdentity::ReleaseCtrlUnk+0x68 combase!CStdMarshal::DisconnectWorker_ReleasesLock+0x385 combase!CStdMarshal::DisconnectSwitch_ReleasesLock+0x28 combase!CStdMarshal::DisconnectA...