Skip to content

Commit

Permalink
ec: free plugin memory when it destructs
Browse files Browse the repository at this point in the history
When sanitizer is enabled, unittest_erasure_code_shec_thread shows,

```
=================================================================
==737674==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 1360 byte(s) in 5 object(s) allocated from:
    #0 0xaaaadddffb08 in operator new(unsigned long) (/root/ceph/build/bin/unittest_erasure_code_shec_thread+0x1bfb08) (BuildId: 187a0067c45bf30f4d0bd2df83a32e0127ef03a1)
    #1 0xffff800bb004 in __erasure_code_init /root/ceph/src/erasure-code/shec/ErasureCodePluginShec.cc:81:36
    #2 0xaaaadde08de0 in thread1(void*) /root/ceph/src/test/erasure-code/TestErasureCodeShec_thread.cc:100:5
    #3 0xffff7f45d5c4 in start_thread nptl/./nptl/pthread_create.c:442:8
    #4 0xffff7f4c5ed8  misc/../sysdeps/unix/sysv/linux/aarch64/clone.S:79

SUMMARY: AddressSanitizer: 1360 byte(s) leaked in 5 allocation(s).
```

When the plugin destructed, memory should be freed without unloading the
dynamic library.

Signed-off-by: Rongqi Sun <[email protected]>
  • Loading branch information
Svelar committed May 28, 2024
1 parent dbd161d commit c351eb2
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions src/erasure-code/ErasureCodePlugin.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*
*/

#include <cassert>
#include <errno.h>

#include "ceph_ver.h"
Expand All @@ -39,15 +40,14 @@ ErasureCodePluginRegistry::ErasureCodePluginRegistry() = default;

ErasureCodePluginRegistry::~ErasureCodePluginRegistry()
{
if (disable_dlclose)
return;

for (std::map<std::string,ErasureCodePlugin*>::iterator i = plugins.begin();
i != plugins.end();
++i) {
void *library = i->second->library;
delete i->second;
dlclose(library);
for (auto& name_plugin : plugins) {
auto *plugin = name_plugin.second;
assert(plugin);
void *library = plugin->library;
delete plugin;
if (!disable_dlclose) {
dlclose(library);
}
}
}

Expand Down

0 comments on commit c351eb2

Please sign in to comment.