]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: debug: dump streams when an applet, iocb or stream is known
authorWilly Tarreau <w@1wt.eu>
Wed, 22 May 2019 07:43:09 +0000 (09:43 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 22 May 2019 09:50:48 +0000 (11:50 +0200)
Whenever we can retrieve a valid stream pointer, we now call stream_dump()
to get a detailed dump of the stream currently running on the processor.
This is used by "show threads" and by ha_panic().

src/debug.c

index 751d26be66fa3fdc1ba7316742a5c1363e41b56f..e47b85c83a65aedb8794d53700708056523e5843 100644 (file)
@@ -81,6 +81,8 @@ void ha_thread_dump(struct buffer *buf, int thr, int calling_tid)
  */
 void ha_task_dump(struct buffer *buf, const struct task *task, const char *pfx)
 {
+       const struct stream *s = NULL;
+
        if (!task) {
                chunk_appendf(buf, "0\n");
                return;
@@ -108,6 +110,16 @@ void ha_task_dump(struct buffer *buf, const struct task *task, const char *pfx)
                      task->process == si_cs_io_cb ? "si_cs_io_cb" :
                      "?",
                      task->context);
+
+       if (task->process == process_stream && task->context)
+               s = (struct stream *)task->context;
+       else if (task->process == task_run_applet && task->context)
+               s = si_strm(((struct appctx *)task->context)->owner);
+       else if (task->process == si_cs_io_cb && task->context)
+               s = si_strm((struct stream_interface *)task->context);
+
+       if (s)
+               stream_dump(buf, s, pfx, '\n');
 }
 
 /* This function dumps all profiling settings. It returns 0 if the output