diff options
author | Daniel Mack <github@zonque.org> | 2016-01-14 10:35:45 +0100 |
---|---|---|
committer | Daniel Mack <github@zonque.org> | 2016-01-14 10:35:45 +0100 |
commit | ca9ec350f39096f19d6672e38ca2419877627a4b (patch) | |
tree | e230757906fdec8c68c93df4805b4f54e15a629c | |
parent | 8ec46f55e5d615696b013e6325b19af441fdd187 (diff) | |
parent | a2fbff31c9c319da51528f85ae97d019f1e61a86 (diff) |
Merge pull request #2320 from evverx/fix-memory-leak-on-reload
Fix memory leak on daemon-reload
-rw-r--r-- | src/core/manager.c | 4 | ||||
-rw-r--r-- | test/test-functions | 19 |
2 files changed, 22 insertions, 1 deletions
diff --git a/src/core/manager.c b/src/core/manager.c index 711b0cdcee..39e3cbbfe1 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -989,7 +989,7 @@ Manager* manager_free(Manager *m) { free(m->switch_root_init); for (i = 0; i < _RLIMIT_MAX; i++) - free(m->rlimit[i]); + m->rlimit[i] = mfree(m->rlimit[i]); assert(hashmap_isempty(m->units_requiring_mounts_for)); hashmap_free(m->units_requiring_mounts_for); @@ -2923,6 +2923,8 @@ int manager_set_default_rlimits(Manager *m, struct rlimit **default_rlimit) { assert(m); for (i = 0; i < _RLIMIT_MAX; i++) { + m->rlimit[i] = mfree(m->rlimit[i]); + if (!default_rlimit[i]) continue; diff --git a/test/test-functions b/test/test-functions index cf8755acd4..80d048c0d2 100644 --- a/test/test-functions +++ b/test/test-functions @@ -119,6 +119,25 @@ setup_basic_environment() { generate_module_dependencies } +install_valgrind() { + if ! type -p valgrind; then + dfatal "Failed to install valgrind" + exit 1 + fi + + local _valgrind_bins=$(strace -e execve valgrind /bin/true 2>&1 >/dev/null | perl -lne 'print $1 if /^execve\("([^"]+)"/') + dracut_install $_valgrind_bins + + local _valgrind_libs=$(LD_DEBUG=files valgrind /bin/true 2>&1 >/dev/null | perl -lne 'print $1 if m{calling init: (/.*vgpreload_.*)}') + dracut_install $_valgrind_libs + + local _valgrind_dbg_and_supp=$( + strace -e open valgrind /bin/true 2>&1 >/dev/null | + perl -lne 'if (my ($fname) = /^open\("([^"]+).*= (?!-)\d+/) { print $fname if $fname =~ /debug|\.supp$/ }' + ) + dracut_install $_valgrind_dbg_and_supp +} + install_dmevent() { instmods dm_crypt =crypto type -P dmeventd >/dev/null && dracut_install dmeventd |