From: Willy Tarreau Date: Thu, 4 May 2023 17:07:56 +0000 (+0200) Subject: MINOR: debug: make "show threads" properly iterate over all threads X-Git-Tag: v2.8-dev10~47 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=009b5519e6a4b8ece180c7feda532f6c103d9fa2;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/debug.c b/src/debug.c index a710f36b04..d23904d70a 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; }