diff --git a/cppuhelper/source/servicemanager.cxx b/cppuhelper/source/servicemanager.cxx index 1e9c2dbbc192..9085e208ee25 100644 --- a/cppuhelper/source/servicemanager.cxx +++ b/cppuhelper/source/servicemanager.cxx @@ -1981,7 +1981,10 @@ void cppuhelper::ServiceManager::preloadImplementations() { if (std::find(aPreloaded.begin(), aPreloaded.end(), fpPreload) == aPreloaded.end()) { aPreloaded.push_back(fpPreload); + // unlock because we may be instantiating some services here + g.unlock(); fpPreload(); + g.lock(); } }