From 6b967213e0f12486edc697832144a2d979151188 Mon Sep 17 00:00:00 2001 From: Toni Harzendorf Date: Wed, 1 Jan 2025 15:06:45 +0100 Subject: [PATCH 1/3] pyslurm.JobStep: fix small memory leak slurm_free_job_step_info_members does not free "submit_line", leading to a memory leak, so we free it manually. Reported to SchedMD: https://support.schedmd.com/show_bug.cgi?id=21729 --- pyslurm/core/job/step.pyx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyslurm/core/job/step.pyx b/pyslurm/core/job/step.pyx index 160db719..719257eb 100644 --- a/pyslurm/core/job/step.pyx +++ b/pyslurm/core/job/step.pyx @@ -190,6 +190,9 @@ cdef class JobStep: def _dealloc_impl(self): slurm_free_job_step_info_members(self.ptr) + # Bug in slurm_free_job_step_info_members - submit_line is not freed + # there. + xfree(self.ptr.submit_line) xfree(self.ptr) slurm_free_update_step_msg(self.umsg) self.umsg = NULL From a331398d7dbe8982c96f670ea35d5cf4562f0a61 Mon Sep 17 00:00:00 2001 From: Toni Harzendorf Date: Wed, 1 Jan 2025 15:08:33 +0100 Subject: [PATCH 2/3] Update valgrind suppression file --- valgrind-pyslurm.supp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/valgrind-pyslurm.supp b/valgrind-pyslurm.supp index d7243f44..bda85a8e 100644 --- a/valgrind-pyslurm.supp +++ b/valgrind-pyslurm.supp @@ -33,6 +33,15 @@ ... } +{ + Slurm topology_g_init + Memcheck:Leak + match-leak-kinds: possible + ... + fun:topology_g_init + ... +} + { Slurm slurm_auth_init Memcheck:Leak @@ -43,11 +52,19 @@ } { - Slurm slurm_conf_init/slurm_init + Slurm slurm_conf_init Memcheck:Leak match-leak-kinds: possible ... fun:slurm_conf_init + ... +} + +{ + Slurm slurm_init + Memcheck:Leak + match-leak-kinds: possible + ... fun:slurm_init ... } From 6923229a8bd56b4f600b7cf5974f6e10448616e2 Mon Sep 17 00:00:00 2001 From: Toni Harzendorf Date: Wed, 1 Jan 2025 15:08:45 +0100 Subject: [PATCH 3/3] job live stats: fix uninitialized value errors in valgrind --- pyslurm/core/job/stats.pyx | 1 + 1 file changed, 1 insertion(+) diff --git a/pyslurm/core/job/stats.pyx b/pyslurm/core/job/stats.pyx index 0fa2eb13..13ce7a1c 100644 --- a/pyslurm/core/job/stats.pyx +++ b/pyslurm/core/job/stats.pyx @@ -70,6 +70,7 @@ cdef load_single(JobStep step): else: verify_rpc(rc) + memset(&locks, 0, sizeof(assoc_mgr_lock_t)) memset(&db_step, 0, sizeof(slurmdb_step_rec_t)) memset(&db_step.stats, 0, sizeof(slurmdb_stats_t))