BUG/MEDIUM: debug/lua: Use internal hlua function to dump the lua traceback

The commit reverts following commits:
  * 83926a04 BUG/MEDIUM: debug/lua: Don't dump the lua stack if not dumpable
  * a61789a1 MEDIUM: lua: Use a per-thread counter to track some non-reentrant parts of lua

Instead of relying on a Lua function to print the lua traceback into the
debugger, we are now using our own internal function (hlua_traceback()).
This one does not allocate memory and use a chunk instead. This avoids any
issue with a possible deadlock in the memory allocator because the thread
processing was interrupted during a memory allocation.

This patch relies on the commit "BUG/MEDIUM: debug/lua: Use internal hlua
function to dump the lua traceback". Both must be backported wherever the
patches above are backported, thus as far as 2.0

(cherry picked from commit cc2c4f8f4c1d8613b481d1b346e083a9d2462811)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 9fb7eb90289552de9de544412de3f178cf6a3723)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit f80140db77075d3dcca673c8a58ea23468676114)
[cf: Reverted patches were not backported, so this patch was adapted
     accordingly]
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/debug.c b/src/debug.c
index 58b5583..b35bff5 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -162,9 +162,9 @@
 	}
 
 	if (hlua && hlua->T) {
-		luaL_traceback(hlua->T, hlua->T, NULL, 0);
-		if (!append_prefixed_str(buf, lua_tostring(hlua->T, -1), pfx, '\n', 1))
-			b_putchr(buf, '\n');
+		chunk_appendf(buf, "stack traceback:\n    ");
+		append_prefixed_str(buf, hlua_traceback(hlua->T, "\n    "), pfx, '\n', 0);
+		b_putchr(buf, '\n');
 	}
 	else
 		b_putchr(buf, '\n');