]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: deinit: always deinit the init_mutex on failed initialization
authorjenny-cheung <ryancaiant@gmail.com>
Sun, 18 Jul 2021 08:40:57 +0000 (16:40 +0800)
committerWilly Tarreau <w@1wt.eu>
Tue, 20 Jul 2021 14:38:23 +0000 (16:38 +0200)
The init_mutex was not unlocked in case an error is encountered during
a thread initialization, and the polling loop was aborted during startup.
In practise it does not have any observable effect since an explicit
exit() is placed there, but it could confuse some debugging tools or
some static analysers, so let's release it as expected.

This addresses issue #1326.

src/haproxy.c

index d6aeed90678cffb4fee690d86fd5767b7f6155c3..79d457ad43e7de43b2386ba4605dd2fd980be5de 100644 (file)
@@ -2739,6 +2739,7 @@ static void *run_thread_poll_loop(void *data)
        list_for_each_entry(ptaf, &per_thread_alloc_list, list) {
                if (!ptaf->fct()) {
                        ha_alert("failed to allocate resources for thread %u.\n", tid);
+                       pthread_mutex_unlock(&init_mutex);
                        exit(1);
                }
        }
@@ -2750,6 +2751,7 @@ static void *run_thread_poll_loop(void *data)
        list_for_each_entry(ptif, &per_thread_init_list, list) {
                if (!ptif->fct()) {
                        ha_alert("failed to initialize thread %u.\n", tid);
+                       pthread_mutex_unlock(&init_mutex);
                        exit(1);
                }
        }