From 009b5519e6a4b8ece180c7feda532f6c103d9fa2 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 4 May 2023 19:07:56 +0200 Subject: [PATCH] MINOR: debug: make "show threads" properly iterate over all threads Previously it would re-dump all threads to the same trash if the output buffer was full, which it never was since the trash is of the same size. Now it dumps one thread, copies it to the buffer and yields until it can continue. Showing 256 threads works as expected. --- src/debug.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/debug.c b/src/debug.c index a710f36b0..d23904d70 100644 --- a/src/debug.c +++ b/src/debug.c @@ -370,14 +370,18 @@ static int cli_io_handler_show_threads(struct appctx *appctx) else thr = 0; - chunk_reset(&trash); - ha_thread_dump_all_to_trash(); + do { + chunk_reset(&trash); + ha_thread_dump(&trash, thr); + + if (applet_putchk(appctx, &trash) == -1) { + /* failed, try again */ + appctx->st1 = thr; + return 0; + } + thr++; + } while (thr < global.nbthread); - if (applet_putchk(appctx, &trash) == -1) { - /* failed, try again */ - appctx->st1 = thr; - return 0; - } return 1; }