From 516853f1cc144bfe5d0010fc12d5f385341e67ab Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 3 Mar 2020 07:04:42 +0100 Subject: [PATCH] MINOR: debug: report the task handler's pointer relative to main Often in crash dumps we see unknown function pointers. Let's display them relative to main, that helps quite a lot figure the function from an executable, for example: (gdb) x/a main+645360 0x4c56a0 : 0x2e6666666666feeb This could be backported to 2.0. --- src/debug.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/debug.c b/src/debug.c index 717719fe6..3c18ff080 100644 --- a/src/debug.c +++ b/src/debug.c @@ -101,6 +101,7 @@ void ha_task_dump(struct buffer *buf, const struct task *task, const char *pfx) const struct stream *s = NULL; const struct appctx __maybe_unused *appctx = NULL; struct hlua __maybe_unused *hlua = NULL; + extern int main(int, char **); if (!task) { chunk_appendf(buf, "0\n"); @@ -121,9 +122,11 @@ void ha_task_dump(struct buffer *buf, const struct task *task, const char *pfx) task->call_date ? " ns ago" : ""); chunk_appendf(buf, "%s" - " fct=%p (%s) ctx=%p", + " fct=%p=main%s%ld (%s) ctx=%p", pfx, task->process, + ((void *)task->process - (void *)main) < 0 ? "" : "+", + (long)((void *)task->process - (void *)main), task->process == process_stream ? "process_stream" : task->process == task_run_applet ? "task_run_applet" : task->process == si_cs_io_cb ? "si_cs_io_cb" :