mirror of
https://github.com/haproxy/haproxy.git
synced 2026-04-15 21:59:41 -04:00
MINOR: debug: implement ha_panic()
This function dumps all existing threads using the thread dump mechanism then aborts. This will be used by the lockup detection and by debugging tools.
This commit is contained in:
parent
9fc5dcbd71
commit
56131ca58e
2 changed files with 12 additions and 0 deletions
|
|
@ -87,6 +87,7 @@ struct buffer;
|
|||
void ha_task_dump(struct buffer *buf, const struct task *task, const char *pfx);
|
||||
void ha_thread_dump(struct buffer *buf, int thr, int calling_tid);
|
||||
void ha_thread_dump_all_to_trash();
|
||||
void ha_panic();
|
||||
|
||||
/* This one is useful to automatically apply poisonning on an area returned
|
||||
* by malloc(). Only "p_" is required to make it work, and to define a poison
|
||||
|
|
|
|||
11
src/debug.c
11
src/debug.c
|
|
@ -136,6 +136,17 @@ static int cli_io_handler_show_threads(struct appctx *appctx)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/* dumps a state of all threads into the trash and on fd #2, then aborts. */
|
||||
void ha_panic()
|
||||
{
|
||||
chunk_reset(&trash);
|
||||
chunk_appendf(&trash, "Thread %u is about to kill the process.\n", tid);
|
||||
ha_thread_dump_all_to_trash();
|
||||
write(2, trash.area, trash.data);
|
||||
for (;;)
|
||||
abort();
|
||||
}
|
||||
|
||||
#ifndef USE_THREAD_DUMP
|
||||
|
||||
/* This function dumps all threads' state to the trash. This version is the
|
||||
|
|
|
|||
Loading…
Reference in a new issue