From e95fbc1d8cd8c1ec51c8b7fafd2341fdf0d299e9 Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Fri, 26 Jul 2024 16:43:44 -0700 Subject: [PATCH] lib: zlog stays running on shutdown No `zlog_fini()`, please. Getting log messages until the end is more important than leaking memory allocated for zlog targets. Signed-off-by: David Lamparter --- lib/libfrr.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/libfrr.c b/lib/libfrr.c index f2247a48e5..00ee57d8aa 100644 --- a/lib/libfrr.c +++ b/lib/libfrr.c @@ -1269,7 +1269,21 @@ void frr_fini(void) event_master_free(master); master = NULL; zlog_tls_buffer_fini(); - zlog_fini(); + + if (0) { + /* this is intentionally disabled. zlog remains running until + * exit(), so even the very last item done during shutdown can + * have its zlog() messages written out. + * + * Yes this causes memory leaks. They are explicitly marked + * with DEFINE_MGROUP_ACTIVEATEXIT, which is only used for + * log target memory allocations, and excluded from leak + * reporting at shutdown. This is strongly preferable over + * just discarding error messages at shutdown. + */ + zlog_fini(); + } + /* frrmod_init -> nothing needed / hooks */ rcu_shutdown(); -- 2.39.5