MINOR: threads: Be sure to remove threads from all_threads_mask on exit
When HAProxy is started with several threads, Each running thread holds a bit in the bitfiled all_threads_mask. This bitfield is used here and there to check which threads are registered to take part in a specific processing. So when a thread exits, it seems normal to remove it from all_threads_mask. No direct impact could be identified with this right now but it would be better to backport it to 1.8 as a preventive measure to avoid complex situations like the one in previous bug.
This commit is contained in:
parent
d8fd2af882
commit
ba86c6c25b
|
@ -2473,6 +2473,8 @@ static void *run_thread_poll_loop(void *data)
|
||||||
list_for_each_entry(ptdf, &per_thread_deinit_list, list)
|
list_for_each_entry(ptdf, &per_thread_deinit_list, list)
|
||||||
ptdf->fct();
|
ptdf->fct();
|
||||||
|
|
||||||
|
HA_ATOMIC_AND(&all_threads_mask, ~tid_bit);
|
||||||
|
|
||||||
#ifdef USE_THREAD
|
#ifdef USE_THREAD
|
||||||
if (tid > 0)
|
if (tid > 0)
|
||||||
pthread_exit(NULL);
|
pthread_exit(NULL);
|
||||||
|
|
Loading…
Reference in New Issue