From: Willy Tarreau Date: Fri, 27 Jul 2018 15:14:41 +0000 (+0200) Subject: BUILD/MINOR: threads: unbreak build with threads disabled X-Git-Tag: v1.9-dev1~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=85d9b84eb14987c9aa012195f09979c56e766447;p=thirdparty%2Fhaproxy.git BUILD/MINOR: threads: unbreak build with threads disabled Depending on the optimization level, gcc may complain that wake_thread() uses an invalid array index for poller_wr_pipe[] when called from __task_wakeup(). Normally the condition to get there never happens, but it's simpler to ifdef out this part of the code which is only used to wake other threads up. No backport is needed, this was brought by the recent introduction of the ability to wake a sleeping thread. --- diff --git a/src/task.c b/src/task.c index 6e7441f1bf..de097baf78 100644 --- a/src/task.c +++ b/src/task.c @@ -71,7 +71,7 @@ void __task_wakeup(struct task *t, struct eb_root *root) { void *expected = NULL; int *rq_size; - unsigned long old_active_mask; + unsigned long __maybe_unused old_active_mask; #ifdef USE_THREAD if (root == &rqueue) { @@ -155,6 +155,7 @@ redo: rqueue_size[nb]++; } +#ifdef USE_THREAD /* If all threads that are supposed to handle this task are sleeping, * wake one. */ @@ -162,6 +163,7 @@ redo: (t->thread_mask & all_threads_mask)) && !(t->thread_mask & old_active_mask)) wake_thread(my_ffsl((t->thread_mask & all_threads_mask) &~ tid_bit) - 1); +#endif return; }