[Tarantool-patches] [PATCH luajit 1/2] Run VM events and finalizers in separate state.

Sergey Bronnikov sergeyb at tarantool.org
Mon Mar 30 10:58:43 MSK 2026


Hi, Sergey!

thanks for the patch! LGTM with a minor comment below.

Sergey

On 3/28/26 18:31, Sergey Kaplun wrote:


<snipped>

> diff --git a/test/tarantool-tests/lj-1403-vmevent-crash-on-stkov.test.lua b/test/tarantool-tests/lj-1403-vmevent-crash-on-stkov.test.lua
> new file mode 100644
> index 00000000..ad275e17
> --- /dev/null
> +++ b/test/tarantool-tests/lj-1403-vmevent-crash-on-stkov.test.lua
> @@ -0,0 +1,47 @@
> +local tap = require('tap')
> +
> +-- The test file to demonstrate LuaJIT crash during stack overflow
> +-- in the VM event handle.
> +-- See also,https://github.com/LuaJIT/LuaJIT/issues/1403.
> +
> +local test = tap.test('lj-1403-vmevent-crash-on-stkov'):skipcond({
> +  ['Test requires JIT enabled'] = not jit.status(),
> +})
> +
> +test:plan(1)
> +
> +local jit_dump = require('jit.dump')
> +
> +-- XXX: Some specific stack usage without a stack top check by the
> +-- Lua function header.
> +local t = setmetatable({}, {__newindex = pcall, __call = type})

reproduced without __call metamethod, please add a comment with explanation

why it is needed

> +-- luacheck: no unused
> +local function prober(...)
> +  -- Invokes `pcall(t, t, t)`.
> +  t[t] = t
> +end
> +
> +jit.opt.start('hotloop=1')
> +-- Need the invocation of the VM event.
> +jit_dump.start('i', '/dev/null')
> +
> +-- The code below causes the stack overflow in the VM event
> +-- handler. The unwinding of the error breaks the JIT semantics
> +-- and leads to a crash.
> +local function looper()
> +  local r = pcall(prober)
> +  if not r then
> +    local n = 1
> +    while n < 3 do
> +      prober(1, 2)
> +      n = n + 1
> +    end
> +  end
> +  looper()
> +end
> +
> +pcall(coroutine.wrap(looper))
> +
> +test:ok(true, 'no crash')
> +
> +test:done(true)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.tarantool.org/pipermail/tarantool-patches/attachments/20260330/74ed2ef2/attachment.htm>


More information about the Tarantool-patches mailing list