In hlua_filter_new(), after each hlua resume, we systematically try to
empty the stack by calling lua_settop(). However we're doing this without
locking the lua context, so it is unsafe in multithreading context if the
script is loaded using 'lua-load'. To fix the issue, we protect the call
with hlua_{lock,unlock}() helpers.
This should be backported up to 2.6.
}
end:
- if (s->hlua)
+ if (s->hlua) {
+ hlua_lock(s->hlua);
lua_settop(s->hlua->T, 0);
+ hlua_unlock(s->hlua);
+ }
if (ret <= 0) {
if (flt_ctx) {
hlua_ctx_destroy(flt_ctx->hlua[0]);