Igor Munkin
d969cb9c31
Prevent Lua VM re-entry through JIT trace.
...
JIT recording semantics assumes FFI calls are leaf regarding the LuaJIT
VM: if the execution exited Lua world through FFI machinery it is not
re-entering Lua world again.
However, there is a way to break this assumption via FFI: one can
re-enter LuaJIT VM via Lua C API used within the particular C routine
called via FFI. As a result the following host stack mix is created:
| Lua-FFI -> C routine -> Lua-C API -> Lua VM
This sort of re-entrancy is not supported by LuaJIT tracing compiler.
@mraleph named such kind of the call stack an "FFI sandwich" in the
tarantool/tarantool#4427 .
This changeset introduces the mechanism for Lua-C API callbacks similar
to the one implemented for Lua-FFI: trace recording is aborted when the
execution re-enters LuaJIT VM. If re-enter is detected while running the
particular mcode, the runtime finishes its execution with EXIT_FAILURE
code and calls panic routine prior to the exit.
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
Co-authored-by: Sergey Ostanevich <sergos@tarantool.org>
Signed-off-by: Igor Munkin <imun@cpan.org>
2024-02-21 19:30:34 +03:00
Mike Pall
0d313b2431
Merge branch 'master' into v2.1
2024-02-04 16:47:14 +01:00
Mike Pall
defe61a567
Rework stack overflow handling.
...
Reported by pwnhacker0x18. Fixed by Peter Cawley. #1152
2024-02-04 16:34:30 +01:00
Mike Pall
9cc2e42b17
Merge branch 'master' into v2.1
2024-01-31 14:39:50 +01:00
Mike Pall
9cdd5a9479
Preserve keys with dynamic values in template tables when saving bytecode.
...
Reported by Lyrthras. Fixed by Peter Cawley. #1155
2024-01-31 14:32:04 +01:00
Mike Pall
5e5d542c99
Merge branch 'master' into v2.1
2024-01-31 14:31:40 +01:00
Mike Pall
14987af80a
Prevent include of luajit_rolling.h.
...
Thanks to Peter Cawley. #1145
2024-01-31 14:29:23 +01:00
Mike Pall
21a46723d8
Merge branch 'master' into v2.1
2024-01-26 23:18:02 +01:00
Mike Pall
e6c0ade97c
Fix documentation bug about '\z' string escape.
2024-01-26 23:17:33 +01:00
Mike Pall
343ce0edaf
Fix zero stripping in %g number formatting.
...
Reported by pwnhacker0x18. #1149
2024-01-25 13:23:48 +01:00
Mike Pall
f2336c48fa
Merge branch 'master' into v2.1
2024-01-23 19:01:46 +01:00
Mike Pall
85b4fed0b0
Fix unsinking of IR_FSTORE for NULL metatable.
...
Reported by pwnhacker0x18. #1147
2024-01-23 18:58:52 +01:00
Mike Pall
3ca0a80711
DynASM/x86: Add endbr instruction.
...
Thanks to Dmitry Stogov. #1143 #1142
2024-01-22 19:17:45 +01:00
Mike Pall
2f35cb45fd
MIPS64 R2/R6: Fix FP to integer conversions.
...
Thanks to Peter Cawley. #1146
2024-01-22 19:12:13 +01:00
Mike Pall
4b90f6c4d7
Add cross-32/64 bit and deterministic bytecode generation.
...
Contributed by Peter Cawley. #993 #1008
2024-01-22 19:06:36 +01:00
Mike Pall
c525bcb902
DynASM/x86: Allow [&expr] operand.
...
Thanks to Dmitry Stogov. #1138
2023-12-23 20:06:17 +01:00
Mike Pall
dbd363ca25
Merge branch 'master' into v2.1
2023-12-23 19:49:43 +01:00
Mike Pall
658530562c
Check for IR_HREF vs. IR_HREFK aliasing in non-nil store check.
...
Thanks to Peter Cawley. #1133
2023-12-23 19:43:03 +01:00
Mike Pall
293199c5eb
Merge branch 'master' into v2.1
2023-12-23 19:23:12 +01:00
Mike Pall
7dbe545933
Respect jit.off() on pending trace exit.
...
Thanks to Sergey Kaplun. #1134
2023-12-23 19:22:34 +01:00
Mike Pall
e02a207909
Merge branch 'master' into v2.1
2023-12-23 19:15:57 +01:00
Mike Pall
c42c62e71a
Simplify handling of instable types in TNEW/TDUP load forwarding.
...
Thanks to Peter Cawley. #994
2023-12-23 19:14:32 +01:00
Mike Pall
29b0b282f5
Merge branch 'master' into v2.1
2023-12-11 13:04:43 +01:00
Mike Pall
9bdfd34dcc
Only emit proper parent references in snapshot replay.
...
Thanks to Peter Cawley. #1132
2023-12-11 13:01:36 +01:00
Mike Pall
ff204d0350
Fix anchoring for string buffer set() method (again).
...
Thanks to Peter Cawley. #1125
2023-12-10 19:42:22 +01:00
Mike Pall
8d5ea4ceb9
Merge branch 'master' into v2.1
2023-12-10 16:13:34 +01:00
Mike Pall
10cc759f25
ARM: Fix stack restore for FP slots.
...
Thanks to Peter Cawley. #1131
2023-12-10 16:10:48 +01:00
Mike Pall
420a9afa93
Merge branch 'master' into v2.1
2023-12-10 15:50:14 +01:00
Mike Pall
1b38c73655
Document workaround for multilib vs. cross-compiler conflict.
...
Reported by igorpupkinable. #1126
2023-12-10 15:45:10 +01:00
Mike Pall
e02cb19b57
Fix anchoring for string buffer set() method.
...
Thanks to Peter Cawley. #1125
2023-12-10 15:33:47 +01:00
Mike Pall
e4168fae5b
Merge branch 'master' into v2.1
2023-12-10 15:02:26 +01:00
Mike Pall
856423f5da
Fix runtime library flags for MSVC debug builds.
...
Reported by igor725. #1127
2023-12-10 15:00:52 +01:00
Mike Pall
487eaaf040
Merge branch 'master' into v2.1
2023-12-10 14:50:29 +01:00
Mike Pall
dcf3627d79
Fix .debug_abbrev section in GDB JIT API.
...
Thanks to Dmitry Stogov. #1129
2023-12-10 14:48:34 +01:00
Mike Pall
d1236a4caa
Optimize table.new() with constant args to (sinkable) IR_TNEW.
...
Thanks to Peter Cawley. #1128
2023-12-10 14:41:56 +01:00
Mike Pall
7ad68a1fd3
Merge branch 'master' into v2.1
2023-12-10 14:33:48 +01:00
Mike Pall
1761fd2ef7
Emit sunk IR_NEWREF only once per key on snapshot replay.
...
Thanks to Sergey Kaplun and Peter Cawley. #1128
2023-12-10 14:29:45 +01:00
Mike Pall
43d0a19158
Fix last commit.
2023-11-15 01:41:31 +01:00
Mike Pall
536cf8a271
Merge branch 'master' into v2.1
2023-11-14 22:56:09 +01:00
Mike Pall
644723649e
x86/x64: Don't fuse loads across IR_NEWREF.
...
Reported by Peter Cawley. #1117
2023-11-14 22:50:21 +01:00
Mike Pall
113a168b79
Improve last commit.
2023-11-12 16:11:11 +01:00
Mike Pall
45c88b7963
x86/x64: Don't fuse loads across table.clear.
...
Reported by Peter Cawley. #1117
2023-11-12 15:41:52 +01:00
Mike Pall
6807e60af1
Merge branch 'master' into v2.1
2023-11-12 15:25:14 +01:00
Mike Pall
d854d00ce9
x86/x64: Add more red zone checks to assembler backend.
...
Thanks to Peter Cawley. #1116
2023-11-12 15:18:44 +01:00
Mike Pall
7c9671a043
Merge branch 'master' into v2.1
2023-11-12 15:11:29 +01:00
Mike Pall
a4c1640432
Add stack check to pcall/xpcall.
...
Analyzed by Peter Cawley. #1048
2023-11-12 14:42:24 +01:00
Mike Pall
69bbbf7736
Merge branch 'master' into v2.1
2023-11-09 11:05:27 +01:00
Mike Pall
65c8493907
Invalidate SCEV entry when returning to lower frame.
...
Thanks to Zhongwei Yao. #1115
2023-11-09 11:02:36 +01:00
Mike Pall
b94fbfbee9
Merge branch 'master' into v2.1
2023-11-07 22:28:53 +01:00
Mike Pall
433d7e8d8d
FFI: Fix pragma push stack limit check and throw on overflow.
...
Reported by Sergey Kaplun. #1114
2023-11-07 22:25:42 +01:00