From 5a4bd2f65b38a891237b3d73255eff3493082788 Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Wed, 18 Mar 2020 21:53:21 +0100 Subject: irmd: Fix cleanup of shm_flow_set The shm_flowset destroy was using the irmd pid, resulting in wrong unlinks. The irmd was not cleaning up the process table, resulting in shm leaks if there were still running processes on exit. Signed-off-by: Dimitri Staessens Signed-off-by: Sander Vrijders --- CMakeLists.txt | 2 +- src/irmd/main.c | 7 +++++++ src/lib/shm_flow_set.c | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d89b028d..8cce6a10 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,7 @@ include(GNUInstallDirs) set(PACKAGE_VERSION_MAJOR 0) set(PACKAGE_VERSION_MINOR 17) -set(PACKAGE_VERSION_PATCH 0) +set(PACKAGE_VERSION_PATCH 1) set(PACKAGE_NAME "${CMAKE_PROJECT_NAME}") set(PACKAGE_DESCRIPTION "The Ouroboros prototype") diff --git a/src/irmd/main.c b/src/irmd/main.c index 940432f1..1c928dca 100644 --- a/src/irmd/main.c +++ b/src/irmd/main.c @@ -1780,6 +1780,13 @@ static void irm_fini(void) prog_entry_destroy(e); } + list_for_each_safe(p, h, &irmd.proc_table) { + struct proc_entry * e = list_entry(p, struct proc_entry, next); + list_del(&e->next); + e->state = PROC_INIT; /* sanitizer already joined */ + proc_entry_destroy(e); + } + registry_destroy(&irmd.registry); pthread_rwlock_unlock(&irmd.reg_lock); diff --git a/src/lib/shm_flow_set.c b/src/lib/shm_flow_set.c index c19adaff..0f701b63 100644 --- a/src/lib/shm_flow_set.c +++ b/src/lib/shm_flow_set.c @@ -148,7 +148,7 @@ struct shm_flow_set * shm_flow_set_create(pid_t pid) if (set == NULL) goto fail_set; - set->pid = getpid(); + set->pid = pid; if (pthread_mutexattr_init(&mattr)) goto fail_mutexattr_init; -- cgit v1.2.3