From 8133bcaf48bb6a678bc17a9373cc59a97b68a74e Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 24 Jun 2017 16:09:30 -0400 Subject: modulemanager: debug log if module is still loaded after dlclose --- src/modulemanager.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/modulemanager.cpp b/src/modulemanager.cpp index 661519ca4..18dbe1131 100644 --- a/src/modulemanager.cpp +++ b/src/modulemanager.cpp @@ -356,10 +356,11 @@ ModuleReturn ModuleManager::DeleteModule(Module *m) Serialize::Unregister(m); + Anope::string name = m->name; void *handle = m->handle; Anope::string filename = m->filename; - Anope::Logger.Log("Unloading module {0}", m->name); + Anope::Logger.Log("Unloading module {0}", name); ModuleDef *def = m->def; AnopeModule *module = m->module; @@ -371,6 +372,13 @@ ModuleReturn ModuleManager::DeleteModule(Module *m) if (dlclose(handle)) Anope::Logger.Log(dlerror()); + handle = dlopen(filename.c_str(), RTLD_NOLOAD); + if (handle != nullptr) + { + Anope::Logger.Debug("Unloaded module {0} but module is still loaded", name); + dlclose(handle); + } + #ifdef _WIN32 if (!filename.empty()) unlink(filename.c_str()); -- cgit