From: Willy Tarreau Date: Mon, 16 Dec 2024 08:31:27 +0000 (+0100) Subject: BUILD: debug: only dump/reset glitch counters when really defined X-Git-Tag: v3.2-dev2~62 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4710ab5604298eefddb36887098d5fc388dcd3cb;p=thirdparty%2Fhaproxy.git BUILD: debug: only dump/reset glitch counters when really defined If neither DEBUG_GLITCHES nor DEBUG_STRICT is set, we end up with no dbg_cnt section, resulting in debug_parse_cli_counters not building due to __stop_dbg_cnt and __start_dbg_cnt not being defined. Let's just condition the end of the function to these conditions. An alternate approach (less elegant) is to always declare a dummy entry of type DBG_COUNTER_TYPES in debug.c. This must be backported to 3.1 since it was brought with glitches. --- diff --git a/src/debug.c b/src/debug.c index d052f5b639..cb33cf0b28 100644 --- a/src/debug.c +++ b/src/debug.c @@ -2261,13 +2261,17 @@ static int debug_parse_cli_counters(char **args, char *payload, struct appctx *a return cli_err(appctx, "Expects an optional action ('reset','show'), optional types ('bug','chk','cnt','glt') and optionally 'all' to even dump null counters.\n"); } +#if DEBUG_STRICT > 0 || defined(DEBUG_GLITCHES) + ctx->start = &__start_dbg_cnt; + ctx->stop = &__stop_dbg_cnt; +#endif if (action == 1) { // reset struct debug_count *ptr; if (!cli_has_level(appctx, ACCESS_LVL_ADMIN)) return 1; - for (ptr = &__start_dbg_cnt; ptr < &__stop_dbg_cnt; ptr++) { + for (ptr = ctx->start; ptr < ctx->stop; ptr++) { if (ctx->types && !(ctx->types & (1 << ptr->type))) continue; _HA_ATOMIC_STORE(&ptr->count, 0); @@ -2276,8 +2280,6 @@ static int debug_parse_cli_counters(char **args, char *payload, struct appctx *a } /* OK it's a show, let's dump relevant counters */ - ctx->start = &__start_dbg_cnt; - ctx->stop = &__stop_dbg_cnt; return 0; }