47 lines
1.7 KiB
Diff
47 lines
1.7 KiB
Diff
From d5cdcf924a6b94cd501e33b0963dd787a72af1f8 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= <ondrej@sury.org>
|
|
Date: Mon, 6 Dec 2021 11:10:17 +0100
|
|
Subject: [PATCH] Stop leaking mutex in nmworker and cond in nm socket
|
|
|
|
On FreeBSD, the pthread primitives are not solely allocated on stack,
|
|
but part of the object lives on the heap. Missing pthread_*_destroy
|
|
causes the heap memory to grow and in case of fast lived object it's
|
|
possible to run out-of-memory.
|
|
|
|
Properly destroy the leaking mutex (worker->lock) and
|
|
the leaking condition (sock->cond).
|
|
|
|
(cherry picked from commit 57d0fabaddf0e7ac297a046b084df8fb22d54d51)
|
|
Conflict: NA
|
|
Reference: https://gitlab.isc.org/isc-projects/bind9/-/commit/d5cdcf924a6b94cd501e33b0963dd787a72af1f8
|
|
---
|
|
lib/isc/netmgr/netmgr.c | 4 +++-
|
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/lib/isc/netmgr/netmgr.c b/lib/isc/netmgr/netmgr.c
|
|
index 54042a9123..e81ad4673e 100644
|
|
--- a/lib/isc/netmgr/netmgr.c
|
|
+++ b/lib/isc/netmgr/netmgr.c
|
|
@@ -425,6 +425,7 @@ nm_destroy(isc_nm_t **mgr0) {
|
|
isc_mempool_put(mgr->evpool, ievent);
|
|
}
|
|
isc_condition_destroy(&worker->cond_prio);
|
|
+ isc_mutex_destroy(&worker->lock);
|
|
|
|
r = uv_loop_close(&worker->loop);
|
|
INSIST(r == 0);
|
|
@@ -1267,8 +1268,9 @@ nmsocket_cleanup(isc_nmsocket_t *sock, bool dofree FLARG) {
|
|
|
|
isc_mem_free(sock->mgr->mctx, sock->ah_frees);
|
|
isc_mem_free(sock->mgr->mctx, sock->ah_handles);
|
|
- isc_mutex_destroy(&sock->lock);
|
|
isc_condition_destroy(&sock->scond);
|
|
+ isc_condition_destroy(&sock->cond);
|
|
+ isc_mutex_destroy(&sock->lock);
|
|
#ifdef NETMGR_TRACE
|
|
LOCK(&sock->mgr->lock);
|
|
ISC_LIST_UNLINK(sock->mgr->active_sockets, sock, active_link);
|
|
--
|
|
2.23.0
|
|
|