On Sun, Jun 24, 2018 at 02:30:57AM +0000, Zero King wrote:
> Hi,
>
> I tried to update haproxy to 1.8.10 in MacPorts, but it fails to build
> from source with the following error (without USE_THREAD):
>
> /usr/bin/clang -arch x86_64 -Iinclude -Iebtree -Wall -O2 -g
> -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv
> -fno-strict-overflow -Wno-address-of-packed-member -Wno-null-dereference
> -Wno-unused-label -DTPROXY -DCONFIG_HAP_CRYPT -DUSE_ZLIB -DENABLE_POLL
> -DENABLE_KQUEUE -DCONFIG_REGPARM=3 -DUSE_OPENSSL -DUSE_PCRE
> -I/opt/local/include -DCONFIG_HAPROXY_VERSION=\"1.8.10-ec17d7a\"
> -DCONFIG_HAPROXY_DATE=\"2018/06/22\" -c -o src/log.o src/log.c
> src/haproxy.c:2475:16: error: cannot take the address of an rvalue of type
> 'unsigned long'
> HA_ATOMIC_AND(&all_threads_mask, ~tid_bit);
> ^~~~~~~~~~~~~~~~~
> include/common/hathreads.h:41:42: note: expanded from macro 'HA_ATOMIC_AND'
> #define HA_ATOMIC_AND(val, flags) ({*(val) &= (flags);})
> ^~~
> 1 error generated.
>
Thanks for your report, there a patch that should solve this issue.
--
William Lallemand
>From 0611c65b8e1c9c7c9f0f16c1542be904236c3fa7 Mon Sep 17 00:00:00 2001
From: William Lallemand <[email protected]>
Date: Sun, 24 Jun 2018 09:37:03 +0200
Subject: [PATCH] BUG/BUILD: threads: unbreak build without threads
The build without threads was once again broken.
This issue was introduce in commit ba86c6c ("MINOR: threads: Be sure to
remove threads from all_threads_mask on exit").
This exactly the same problem that the last time it happened, because of
all_threads_mask not being defined with USE_THREAD=
---
src/haproxy.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/haproxy.c b/src/haproxy.c
index 11d1d47ce..4101cefa1 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -2473,9 +2473,8 @@ static void *run_thread_poll_loop(void *data)
list_for_each_entry(ptdf, &per_thread_deinit_list, list)
ptdf->fct();
- HA_ATOMIC_AND(&all_threads_mask, ~tid_bit);
-
#ifdef USE_THREAD
+ HA_ATOMIC_AND(&all_threads_mask, ~tid_bit);
if (tid > 0)
pthread_exit(NULL);
#endif
--
2.16.1