[Tarantool-patches] [PATCH 1/2] test: disable JIT for Lua Fun totable function
Igor Munkin
imun at tarantool.org
Fri Jun 19 23:40:47 MSK 2020
JIT compiler can generate invalid trace for <totable> function breaking
its semantics (see LuaJIT/LuaJIT#584). Since interpreter works fine and
produces right results, disabling JIT for this function (and all its
subfunctions) stops execution failures.
Relates to LuaJIT/LuaJIT#584
Fixes #4252
Signed-off-by: Igor Munkin <imun at tarantool.org>
---
test/box-tap/key_def.test.lua | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/test/box-tap/key_def.test.lua b/test/box-tap/key_def.test.lua
index d7dbf5b88..ce7a3cb63 100755
--- a/test/box-tap/key_def.test.lua
+++ b/test/box-tap/key_def.test.lua
@@ -4,6 +4,14 @@ local tap = require('tap')
local ffi = require('ffi')
local json = require('json')
local fun = require('fun')
+
+-- Fix for gh-4252: to prevent invalid trace assembling (see
+-- LuaJIT/LuaJIT#584) disable JIT for fun.totable function and
+-- method (these functions are different GCfunc objects) and all
+-- their subfunctions.
+jit.off(fun.totable, true)
+jit.off(fun.iter({}).totable, true)
+
local key_def_lib = require('key_def')
local usage_error = 'Bad params, use: key_def.new({' ..
--
2.25.0
More information about the Tarantool-patches
mailing list