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 6ff0a66..254c2a3 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -8617,6 +8617,13 @@
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;