Hello allI've tried to log this as a bug ticket in Mantis, but it seemed to have problems allowing me to register an account.
We've run into a memory leak in collectd, triggered by usage of 'listval' via the unixsock plugin.
When making a 'listval' call, utils_cmd_listval.c:handle_listval() calls utils_cache.c:uc_get_names() to retrieve a list of active value names from the internal cache. uc_get_names() uses realloc() to allocate memory in which to store the list, and returns pointers.
handle_listval() does not perform a free() on the returned memory. Each time listval is called, some memory is leaked. handle_getval() does not suffer from the same problem - a free() is called in that case.
Patch is attached. I don't code C regularly any more, so it may need some cleaning before inclusion..
Thanks; Ben
Index: src/utils_cmd_listval.c =================================================================== --- src/utils_cmd_listval.c (revision 7092) +++ src/utils_cmd_listval.c (working copy) @@ -79,8 +79,14 @@ print_to_socket (fh, "%i Value%s found\n", (int) number, (number == 1) ? "" : "s"); for (i = 0; i < number; i++) + { print_to_socket (fh, "%u %s\n", (unsigned int) times[i], names[i]); + sfree(names[i]); + } + sfree(names); + sfree(times); + return (0); } /* int handle_listval */
_______________________________________________ collectd mailing list collectd@verplant.org http://mailman.verplant.org/listinfo/collectd