DEBUG: tinfo: store the pthread ID and the stack pointer in tinfo

When debugging a core, it's difficult to match a given gdb thread number
against an internal thread. Let's just store the pthread ID and the stack
pointer in each tinfo. This could help in the future by allowing to just
glance over them and pick the right one depending what info is found
first.
This commit is contained in:
Willy Tarreau 2023-11-22 18:01:25 +01:00
parent 53da8bfcb6
commit 2268f10dd6
2 changed files with 10 additions and 0 deletions

View File

@ -110,6 +110,10 @@ struct thread_info {
uint tid, ltid; /* process-wide and group-wide thread ID (start at 0) */
ulong ltid_bit; /* bit masks for the tid/ltid */
uint tgid; /* ID of the thread group this thread belongs to (starts at 1; 0=unset) */
/* 32-bit hole here */
ullong pth_id; /* the pthread_t cast to a ullong */
void *stack_top; /* the top of the stack when entering the thread */
/* pad to cache line (64B) */
char __pad[0]; /* unused except to check remaining room */

View File

@ -3056,6 +3056,12 @@ static void *run_thread_poll_loop(void *data)
ha_set_thread(data);
set_thread_cpu_affinity();
clock_set_local_source();
#ifdef USE_THREAD
ha_thread_info[tid].pth_id = ha_get_pthread_id(tid);
#endif
ha_thread_info[tid].stack_top = __builtin_frame_address(0);
/* thread is started, from now on it is not idle nor harmless */
thread_harmless_end();
thread_idle_end();