BUG/MEDIUM: fd/threads: fix incorrect thread selection in wakeup broadcast

In commit cfdd20a0b ("MEDIUM: fd: support broadcasting updates for foreign
groups in updt_fd_polling") we decided to pick a random thread number among
a set of candidates for a wakeup in case we need an instant change. But the
thread count range was wrong (MAX_THREADS) instead of tg->count, resulting
in random crashes when thread groups are > 1 and MAX_THREADS > 64.

No backport is needed, this was introduced in 2.7-dev2.
This commit is contained in:
Willy Tarreau 2022-07-19 15:58:00 +02:00
parent 7e94b40a22
commit c1640f79fe

View File

@ -486,7 +486,7 @@ void updt_fd_polling(const int fd)
fd_add_to_fd_list(&update_list[tgrp - 1], fd);
thr = one_among_mask(fdtab[fd].thread_mask & tg->threads_enabled, statistical_prng_range(MAX_THREADS));
thr = one_among_mask(fdtab[fd].thread_mask & tg->threads_enabled, statistical_prng_range(tg->count));
thr += ha_tgroup_info[tgrp - 1].base;
wake_thread(thr);