Application creates COM object (dll in clients context), and in some moment it needs install new version of COM object. App delete one, unregister, calls CoFreeUnusedLibraries(). CoFreeUnusedLibraries calls DllCanUnloadNow and ones return S_OK, but dll doesn't unload until calls CoUninitialize(). But app uses other COM objects and can't call CoUninitialize(). How to free com dll?