From 0001c5341a56e063c234dd45996fb21cef0865fe Mon Sep 17 00:00:00 2001 From: Egor Date: Sat, 1 Mar 2025 23:19:59 +0200 Subject: [PATCH] netpoll: fix memory leaks --- src/job.cpp | 6 +++--- src/netpoll.cpp | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/job.cpp b/src/job.cpp index 336d876..248164b 100644 --- a/src/job.cpp +++ b/src/job.cpp @@ -75,9 +75,9 @@ void job_init(void) } void job_fini(void) { -#ifndef NETPOLL_USE_LIBUV - uv_signal_stop(&uvsigchld); - uv_signal_stop(&uvsigint); +#ifdef NETPOLL_USE_LIBUV + uv_close((uv_handle_t *)&uvsigchld, 0); + uv_close((uv_handle_t *)&uvsigint, 0); #endif } static void job_process(void) diff --git a/src/netpoll.cpp b/src/netpoll.cpp index 7b98a73..13a0dc6 100644 --- a/src/netpoll.cpp +++ b/src/netpoll.cpp @@ -239,7 +239,11 @@ void net_poll_init(void) } void net_poll_fini(void) { - uv_loop_close(uvloop); + // get rid of closing handles + uv_run(uv_default_loop(), UV_RUN_NOWAIT); + if (uv_loop_close(uvloop) != 0) + uv_print_all_handles(uvloop, stderr); + uv_library_shutdown(); } static void net_poll_add_impl(int i) { @@ -258,7 +262,7 @@ static void net_poll_del_impl(int i) struct polldata *poll = uvpoll[i]; memmove(uvpoll+i, uvpoll+i+1, sizeof(uvpoll[0])*(nfds-(i+1))); uvpoll[nfds-1] = poll; - uv_poll_stop(&poll->uv); + uv_close((uv_handle_t *)&poll->uv, 0); if (lastptr > i) lastptr--; } -- 2.56.0