From: Tim Duesterhus Date: Sat, 4 Jul 2020 09:53:26 +0000 (+0200) Subject: CLEANUP: Add static void hlua_deinit() X-Git-Tag: v2.3-dev1~45 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d0c0ca2720a387fd21006302c441c7add5a25b70;p=thirdparty%2Fhaproxy.git CLEANUP: Add static void hlua_deinit() Compiling HAProxy with USE_LUA=1 and running a configuration check within valgrind with a very simple configuration such as: listen foo bind *:8080 Will report quite a few possible leaks afterwards: ==24048== LEAK SUMMARY: ==24048== definitely lost: 0 bytes in 0 blocks ==24048== indirectly lost: 0 bytes in 0 blocks ==24048== possibly lost: 95,513 bytes in 1,209 blocks ==24048== still reachable: 329,960 bytes in 71 blocks ==24048== suppressed: 0 bytes in 0 blocks Printing these possible leaks shows that all of them are caused by Lua. Luckily Lua makes it *very* easy to free all used memory, so let's do this on shutdown. Afterwards this patch is applied the output looks much better: ==24199== LEAK SUMMARY: ==24199== definitely lost: 0 bytes in 0 blocks ==24199== indirectly lost: 0 bytes in 0 blocks ==24199== possibly lost: 0 bytes in 0 blocks ==24199== still reachable: 329,960 bytes in 71 blocks ==24199== suppressed: 0 bytes in 0 blocks --- diff --git a/src/hlua.c b/src/hlua.c index 6ff0a6607e..254c2a33d1 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -8617,6 +8617,13 @@ void hlua_init(void) RESET_SAFE_LJMP(gL.T); } +static void hlua_deinit() +{ + lua_close(gL.T); +} + +REGISTER_POST_DEINIT(hlua_deinit); + static void hlua_register_build_options(void) { char *ptr = NULL;