[Tarantool-patches] [PATCH luajit][v2] Handle all stack layouts in (delayed) TRACE vmevent.
Sergey Kaplun
skaplun at tarantool.org
Fri Feb 7 13:50:04 MSK 2025
Hi, Sergey!
Thanks for the fixes!
LGTM, after fixing a bunch of nits below.
On 06.02.25, Sergey Bronnikov wrote:
> From: Mike Pall <mike>
>
<snipped>
> ---
> Branch: https://github.com/tarantool/luajit/tree/ligurio/lj-1087-vm-handler-call
>
> Related issues:
> - https://github.com/LuaJIT/LuaJIT/issues/1087
> - https://github.com/tarantool/tarantool/issues/10709
>
> Changes in the v2:
> * Addressed comments by Sergey Kaplun
>
<snipped>
> diff --git a/src/lj_trace.c b/src/lj_trace.c
> index 94cb27e5..6b97cc13 100644
> --- a/src/lj_trace.c
> +++ b/src/lj_trace.c
<snipped>
> diff --git a/test/tarantool-c-tests/lj-1087-vm-handler-call.test.c b/test/tarantool-c-tests/lj-1087-vm-handler-call.test.c
> new file mode 100644
> index 00000000..ebdf63e1
> --- /dev/null
> +++ b/test/tarantool-c-tests/lj-1087-vm-handler-call.test.c
<snipped>
> +/* XXX: Still need normal assert inside writer functions. */
Minor: Since there is no writer function, I would rather use the
following wording:
| Still need normal assert for sanity checks.
> +#undef NDEBUG
> +#include <assert.h>
> +
> +/*
> + * Test file to demonstrate a segmentation fault, when C function
Typo: s/C function/a C function/
> + * is used as a VM handler in LuaJIT:
Minor: `as a VM handler for trace events` is a little bit more verbose.
Feel free to ignore.
> + *
> + * Program received signal SIGSEGV, Segmentation fault.
> + * 0x000055555557e77d in trace_abort (J=0x7ffff7f9b6b8) at lj_trace.c:615
> + * 615 lj_vmevent_send(L, TRACE,
> + * (gdb) bt
> + *
> + * See details in https://github.com/LuaJIT/LuaJIT/issues/1087.
> + */
> +
<snipped>
> + /*
> + * The number 32767 is `REF_DROP - REF_BIAS`.
It will be better to rephrase the next sentence.
> See the commit
> + * 0fdf06b456e6 ("test: relax JIT setup in misc.getmetrics
> + * test") for the details.
> + */
I suggest the following comment.
| This is the maximum possible IR amount, so the trace is always
| aborted.
The amount of text to read is approximately the same, but we don't need
to look into the mysterious commit anymore. :)
> + int res = luaL_dostring(L, "jit.opt.start('minstitch=32767')");
<snipped>
--
Best regards,
Sergey Kaplun
More information about the Tarantool-patches
mailing list