]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MEDIUM: thread: Fix a deadlock if an isolated thread is marked as harmless
authorChristopher Faulet <cfaulet@haproxy.com>
Thu, 25 Mar 2021 13:11:36 +0000 (14:11 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 25 Mar 2021 13:31:50 +0000 (14:31 +0100)
commita9a9e9aac93bae4d21d22e02fd436717a5a4a07a
tree9609d161ba1d9fa8433e857b039e6c9ed360f1b2
parent65bf600cc3ced517196138fb4aad6d58d4dc4220
BUG/MEDIUM: thread: Fix a deadlock if an isolated thread is marked as harmless

If an isolated thread is marked as harmless, it will loop forever in
thread_harmless_till_end() waiting no threads are isolated anymore. It never
happens because the current thread is isolated. To fix the bug, we exclude
the current thread for the test. We now wait for all other threads to leave
the rendez-vous point.

This bug only seems to occurr if HAProxy is compiled with DEBUG_UAF, when
pool_gc() is called. pool_gc() isolates the current thread, while
pool_free_area() set the thread as harmless when munmap is called.

This patch must be backported as far as 2.0.
src/thread.c