Skip to content

Commit

Permalink
pim6d: Fix memory leaks
Browse files Browse the repository at this point in the history
Problem Statement:
========================
Mentioning few of the leaks here:

=3843268== 6 bytes in 3 blocks are still reachable in loss record 1 of 29
==3843268==    at 0x483C855: malloc (vg_replace_malloc.c:381)
==3843268==    by 0x489ED0E: qmalloc (memory.c:106)
==3843268==    by 0x48DE8DB: redist_add_instance (zclient.c:125)
==3843268==    by 0x48DF561: zclient_init (zclient.c:647)
==3843268==    by 0x14FFA3: pim_zebra_init (pim_zebra.c:527)
==3843268==    by 0x11D021: main (pim6_main.c:178)
==3843268==
==3843268== 24 bytes in 1 blocks are still reachable in loss record 2 of 29
==3843268==    at 0x484147B: calloc (vg_replace_malloc.c:1328)
==3843268==    by 0x489EE03: qcalloc (memory.c:111)
==3843268==    by 0x4878DDE: buffer_new (buffer.c:72)
==3843268==    by 0x48DE7BF: zclient_new (zclient.c:75)
==3843268==    by 0x14FF1D: pim_zebra_init (pim_zebra.c:516)
==3843268==    by 0x11D021: main (pim6_main.c:178)
==3843268==
==3843268== 24 bytes in 1 blocks are still reachable in loss record 3 of 29
==3843268==    at 0x484147B: calloc (vg_replace_malloc.c:1328)
==3843268==    by 0x489EE03: qcalloc (memory.c:111)
==3843268==    by 0x4878DDE: buffer_new (buffer.c:72)
==3843268==    by 0x48DE7BF: zclient_new (zclient.c:75)
==3843268==    by 0x150A3D: zclient_lookup_new (pim_zlookup.c:131)
==3843268==    by 0x11D021: main (pim6_main.c:178)

RCA:
=======================
Memory is allocated when the daemon started but
it is not freed when terminated.

Fix:
=======================
Freeing the memory when daemon goes down.

Signed-off-by: Mobashshera Rasool <[email protected]>
  • Loading branch information
mobash-rasool committed Nov 9, 2023
1 parent 19bcca4 commit 43d3e25
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions pimd/pim6_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include "pim_nb.h"
#include "pim6_cmd.h"
#include "pim6_mld.h"
#include "pim_zlookup.h"

zebra_capabilities_t _caps_p[] = {
ZCAP_SYS_ADMIN,
Expand Down Expand Up @@ -189,11 +190,20 @@ int main(int argc, char **argv, char **envp)

static void pim6_terminate(void)
{
struct zclient *zclient;

pim_vrf_terminate();
pim_router_terminate();

prefix_list_reset();
access_list_reset();

zclient = pim_zebra_zclient_get();
if (zclient) {
zclient_stop(zclient);
zclient_free(zclient);
}

zclient_lookup_free();
frr_fini();
}

0 comments on commit 43d3e25

Please sign in to comment.