From 186f37674c12d85028af87661938d57644c075b4 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 4 Dec 2020 11:48:12 +0100 Subject: [PATCH] BUG/MINOR: lua-thread: close all states on deinit It seems to me that lua_close() must be called on all states at deinit time, not just the first two ones. This is likely a remnant of commit 59f11be43 ("MEDIUM: lua-thread: Add the lua-load-per-thread directive"). There should likely be some memory leak reports when using Lua without this fix, though none were observed for now. No backport is needed as this was merged into 2.4-dev. --- src/hlua.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/hlua.c b/src/hlua.c index 66d0b7bbc..fbccaaaaa 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -191,7 +191,7 @@ lua_State *hlua_init_state(int thread_id); /* The main Lua execution context. The 0 index is the * common state shared by all threads. */ -lua_State *hlua_states[MAX_THREADS + 1]; +static lua_State *hlua_states[MAX_THREADS + 1]; /* This is the memory pool containing struct lua for applets * (including cli). @@ -9287,8 +9287,12 @@ void hlua_init(void) { static void hlua_deinit() { - lua_close(hlua_states[0]); - lua_close(hlua_states[1]); + int thr; + + for (thr = 0; thr < MAX_THREADS+1; thr++) { + if (hlua_states[thr]) + lua_close(hlua_states[thr]); + } } REGISTER_POST_DEINIT(hlua_deinit);