summaryrefslogtreecommitdiff
path: root/src/modulemanager.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2017-06-24 16:09:30 -0400
committerAdam <Adam@anope.org>2017-06-24 16:09:30 -0400
commit8133bcaf48bb6a678bc17a9373cc59a97b68a74e (patch)
treed7af06a6f44eacf35b6c678f79d934857cfd7285 /src/modulemanager.cpp
parent2b6c5833bb6cd6b1e21bb66a0ebbc6a6e3e86767 (diff)
modulemanager: debug log if module is still loaded after dlclose
Diffstat (limited to 'src/modulemanager.cpp')
-rw-r--r--src/modulemanager.cpp10
1 files changed, 9 insertions, 1 deletions
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());