From: Willy Tarreau Date: Fri, 2 Sep 2022 07:13:12 +0000 (+0200) Subject: MINOR: debug: report applet pointer and handler in crashes when known X-Git-Tag: v2.7-dev5~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=714900a3c967eae7ff8d528239e7e9d02fac5df9;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/stream.c b/src/stream.c index 4208885f9d..49844c7f2f 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 "