diff --git a/services/distributedhardwarefwkservice/src/distributed_hardware_manager_factory.cpp b/services/distributedhardwarefwkservice/src/distributed_hardware_manager_factory.cpp index fc9e052344aecc5a4900191232f493ecec4908da..6ee697ddcfd3f3ce2136801878cf026d84956888 100644 --- a/services/distributedhardwarefwkservice/src/distributed_hardware_manager_factory.cpp +++ b/services/distributedhardwarefwkservice/src/distributed_hardware_manager_factory.cpp @@ -136,7 +136,7 @@ int32_t DistributedHardwareManagerFactory::LoadLibrary() return DH_FWK_SUCCESS; } - handler_ = dlopen(LIB_NAME, RTLD_NOW); + handler_ = dlopen(LIB_NAME, RTLD_NOW | RTLD_NODELETE); if (handler_ == nullptr) { DHLOGE("open %s failed.", LIB_NAME); return ERR_DH_FWK_HARDWARE_MANAGER_LIB_IMPL_OPEN_FAILED; diff --git a/services/distributedhardwarefwkserviceimpl/src/componentloader/component_loader.cpp b/services/distributedhardwarefwkserviceimpl/src/componentloader/component_loader.cpp index 9d262bbb828b090002650d88e58e5bd3ea9e0253..0d4aea8760fd021c9b0767c728611db82af73b4a 100644 --- a/services/distributedhardwarefwkserviceimpl/src/componentloader/component_loader.cpp +++ b/services/distributedhardwarefwkserviceimpl/src/componentloader/component_loader.cpp @@ -135,7 +135,7 @@ void *ComponentLoader::GetHandler(const std::string &soName) DHLOGE("File canonicalization failed"); return nullptr; } - void *pHandler = dlopen(path, RTLD_LAZY); + void *pHandler = dlopen(path, RTLD_LAZY | RTLD_NODELETE); if (pHandler == nullptr) { DHLOGE("%s handler load failed.", path); return nullptr;