|
Ran
|
Jobs
1
|
Files
89
|
Run time
1min
|
Badge
README BADGES
|
push
github
MIPS64: Avoid unaligned load in lj_vm_exit_interp. Thanks to Sergey Kaplun. (cherry picked from commit 2aec641e0) MIPS processors originally required all memory accesses to be naturally aligned. If we use ld instruction to load a double-word from the address which is word-aligned, MIPS raises the exception SIGBUS. When exiting the interpreter, if the current function is a fast function, the code in the `lj_vm_exit_interp()` throws SIGBUS. The pc field for the fast function points to the word-aligned bytecodes for ASM fast functions, and PC2PROTO offset is double-word-aligned. The resulting address is somewhere in the dispatch table. Hence, some (odd-indexed) fast function access leads to the BUS error. For other architectures the load from unaligned access is not a problem so there are no exceptions. This patch prevents unaligned memory access by address loading only after fast-function checks. Sergey Kaplun: * added the description and the test for the problem Part of tarantool/tarantool#12134 Reviewed-by: Sergey Bronnikov <sergeyb@tarantool.org> Signed-off-by: Sergey Kaplun <skaplun@tarantool.org> (cherry picked from commit 3ed650fed)
5690 of 6030 branches covered (94.36%)
Branch coverage included in aggregate %.
21695 of 23433 relevant lines covered (92.58%)
1885487.6 hits per line
| Lines | Coverage | ∆ | File |
|---|---|---|---|
| 1 |
93.09 |
-0.33% | src/lj_ir.c |
| 1 |
96.7 |
0.0% | src/lj_record.c |
| 1 |
97.13 |
-0.19% | src/lj_trace.c |
| 2 |
87.92 |
-0.25% | src/lj_crecord.c |
| 2 |
92.0 |
-0.44% | src/luajit.c |
| 4 |
77.11 |
-0.23% | src/lj_opt_fold.c |
| 6 |
94.74 |
-4.31% | src/lj_str.c |
| 10 |
77.8 |
-1.01% | src/lj_api.c |
| ID | Job ID | Ran | Files | Coverage | |
|---|---|---|---|---|---|
| 1 | 23050958301.1 | 89 |
92.95 |
GitHub Action Run |
| Coverage | ∆ | File | Lines | Relevant | Covered | Missed | Hits/Line | Branch Hits | Branch Misses |
|---|