Plug-in loader does not free the memory correctly. Fix that.
This problem is revealed by running the "interpreter" test (for now in topic/tests):
==32373==
==32373== HEAP SUMMARY:
==32373== in use at exit: 197 bytes in 3 blocks
==32373== total heap usage: 999 allocs, 996 frees, 107,988 bytes allocated
==32373==
==32373== Searching for pointers to 3 not-freed blocks
==32373== Checked 168,572 bytes
==32373==
==32373== 20 bytes in 1 blocks are still reachable in loss record 1 of 3
==32373== at 0x402425F: calloc (vg_replace_malloc.c:467)
==32373== by 0x420C105: _dlerror_run (dlerror.c:142)
==32373== by 0x420BB40: dlopen@@GLIBC_2.1 (dlopen.c:88)
==32373== by 0x4094253: dynamicgraph::PluginLoader::loadPlugins() (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x4083F6F: dynamicgraph::Interpreter::cmdLoadPlugin(std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&) (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x4090211: boost::_mfi::mf3, std::allocator >&, std::ostream&>::operator()(dynamicgraph::Interpreter*, std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&) const (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x408EAE7: void boost::_bi::list4, boost::arg<1>, boost::arg<2>, boost::arg<3> >::operator(), std::allocator >&, std::ostream&>, boost::_bi::list3, std::allocator >&, std::ostream&> >(boost::_bi::type, boost::_mfi::mf3, std::allocator >&, std::ostream&>&, boost::_bi::list3, std::allocator >&, std::ostream&>&, int) (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x408CC28: void boost::_bi::bind_t, std::allocator >&, std::ostream&>, boost::_bi::list4, boost::arg<1>, boost::arg<2>, boost::arg<3> > >::operator(), std::allocator >, std::ostream>(std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&) (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x4089F07: boost::detail::function::void_function_obj_invoker3, std::allocator >&, std::ostream&>, boost::_bi::list4, boost::arg<1>, boost::arg<2>, boost::arg<3> > >, void, std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&>::invoke(boost::detail::function::function_buffer&, std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&) (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x4087939: boost::function3, std::allocator >&, std::ostream&>::operator()(std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&) const (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x4085262: dynamicgraph::Interpreter::cmd(std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&) (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x8053ECA: cmd_loadPlugin::test_method() (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/tests/interpreter)
==32373==
==32373== 73 bytes in 1 blocks are still reachable in loss record 2 of 3
==32373== at 0x4025016: realloc (vg_replace_malloc.c:525)
==32373== by 0x43C4181: vasprintf (vasprintf.c:86)
==32373== by 0x43AB21A: asprintf (asprintf.c:37)
==32373== by 0x420C335: dlerror (dlerror.c:100)
==32373== by 0x40942F3: dynamicgraph::PluginLoader::loadPlugins() (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x4083F6F: dynamicgraph::Interpreter::cmdLoadPlugin(std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&) (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x4090211: boost::_mfi::mf3, std::allocator >&, std::ostream&>::operator()(dynamicgraph::Interpreter*, std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&) const (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x408EAE7: void boost::_bi::list4, boost::arg<1>, boost::arg<2>, boost::arg<3> >::operator(), std::allocator >&, std::ostream&>, boost::_bi::list3, std::allocator >&, std::ostream&> >(boost::_bi::type, boost::_mfi::mf3, std::allocator >&, std::ostream&>&, boost::_bi::list3, std::allocator >&, std::ostream&>&, int) (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x408CC28: void boost::_bi::bind_t, std::allocator >&, std::ostream&>, boost::_bi::list4, boost::arg<1>, boost::arg<2>, boost::arg<3> > >::operator(), std::allocator >, std::ostream>(std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&) (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x4089F07: boost::detail::function::void_function_obj_invoker3, std::allocator >&, std::ostream&>, boost::_bi::list4, boost::arg<1>, boost::arg<2>, boost::arg<3> > >, void, std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&>::invoke(boost::detail::function::function_buffer&, std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&) (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x4087939: boost::function3, std::allocator >&, std::ostream&>::operator()(std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&) const (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x4085262: dynamicgraph::Interpreter::cmd(std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&) (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373==
==32373== 104 bytes in 1 blocks are still reachable in loss record 3 of 3
==32373== at 0x4024F20: malloc (vg_replace_malloc.c:236)
==32373== by 0x401193F: add_to_global (dl-open.c:107)
==32373== by 0x4011E2C: dl_open_worker (dl-open.c:468)
==32373== by 0x400D7E5: _dl_catch_error (dl-error.c:178)
==32373== by 0x40115E5: _dl_open (dl-open.c:554)
==32373== by 0x420BC0A: dlopen_doit (dlopen.c:67)
==32373== by 0x400D7E5: _dl_catch_error (dl-error.c:178)
==32373== by 0x420C09B: _dlerror_run (dlerror.c:164)
==32373== by 0x420BB40: dlopen@@GLIBC_2.1 (dlopen.c:88)
==32373== by 0x4094253: dynamicgraph::PluginLoader::loadPlugins() (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x4083F6F: dynamicgraph::Interpreter::cmdLoadPlugin(std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&) (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373== by 0x4090211: boost::_mfi::mf3, std::allocator >&, std::ostream&>::operator()(dynamicgraph::Interpreter*, std::string const&, std::basic_istringstream, std::allocator >&, std::ostream&) const (in /home/thomas/profiles/laas/src/unstable/sot/dynamic-graph/_build/lib/libdynamic-graph.so.1.1-106-g8ed2a-dirty)
==32373==
==32373== LEAK SUMMARY:
==32373== definitely lost: 0 bytes in 0 blocks
==32373== indirectly lost: 0 bytes in 0 blocks
==32373== possibly lost: 0 bytes in 0 blocks
==32373== still reachable: 197 bytes in 3 blocks
==32373== suppressed: 0 bytes in 0 blocks
==32373==
==32373== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 45 from 11)
--32373--
--32373-- used_suppression: 45 dl-hack3-cond-1
==32373==
==32373== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 45 from 11)