mirror of
https://github.com/haproxy/haproxy.git
synced 2026-02-03 20:39:41 -05:00
BUG/MEDIUM: debug/lua: Don't dump the lua stack if not dumpable
When we try to dump the stack of a lua context, if it is not dumpable, nothing is performed and a message is emitted instead. This happens when a lua execution was interrupted inside a non-reentrant part. This patch depends on following commit : * MEDIUM: lua: Use a per-thread counter to track some non-reentrant parts of lua Thanks to this patch, we avoid a possible deadllock if the lua is interrupted by the watchdog in the lua memory allocator, because realloc() is not async-signal-safe. Both patches must be backported as far as 2.0.
This commit is contained in:
parent
a61789a1d6
commit
83926a04fe
1 changed files with 7 additions and 3 deletions
10
src/debug.c
10
src/debug.c
|
|
@ -264,9 +264,13 @@ void ha_task_dump(struct buffer *buf, const struct task *task, const char *pfx)
|
|||
}
|
||||
|
||||
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');
|
||||
if (hlua_not_dumpable == 0) {
|
||||
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');
|
||||
}
|
||||
else
|
||||
chunk_appendf(buf, "Inside non-rentrant part, Stack traceback not available\n");
|
||||
}
|
||||
else
|
||||
b_putchr(buf, '\n');
|
||||
|
|
|
|||
Loading…
Reference in a new issue