From 714900a3c967eae7ff8d528239e7e9d02fac5df9 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 2 Sep 2022 09:13:12 +0200 Subject: [PATCH] MINOR: debug: report applet pointer and handler in crashes when known When an appctx is found looping over itself, we report a number of info but not the pointers to the definition nor the handler, which can be quite handy in some cases. Let's add them and try to decode the symbol. --- src/stream.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/stream.c b/src/stream.c index 4208885f9..49844c7f2 100644 --- a/src/stream.c +++ b/src/stream.c @@ -2829,6 +2829,18 @@ void stream_dump_and_crash(enum obj_type *obj, int rate) } chunk_appendf(&trash, "}"); + if (ptr != s) { // that's an appctx + const struct appctx *appctx = ptr; + + chunk_appendf(&trash, " applet=%p(", appctx->applet); + resolve_sym_name(&trash, NULL, appctx->applet); + chunk_appendf(&trash, ")"); + + chunk_appendf(&trash, " handler=%p(", appctx->applet->fct); + resolve_sym_name(&trash, NULL, appctx->applet->fct); + chunk_appendf(&trash, ")"); + } + memprintf(&msg, "A bogus %s [%p] is spinning at %d calls per second and refuses to die, " "aborting now! Please report this error to developers "