Commit 6701401
Add stack check to pcall/xpcall.
Analyzed by Peter Cawley.
(cherry picked from commit a4c1640)
In the previous commit ("LJ_FR2: Fix stack checks in vararg calls.")
stack overflow for vararg functions and metamethod invocations
was fixed partially and there are still cases where stack overflow
happens, see comments in the test. The patch fixes the issue by
adding the stack check to fast functions `pcall()` and `xpcall()`.
Sergey Bronnikov:
* added the description and the test for the problem
Part of tarantool/tarantool#116911 parent 0120ebb commit 6701401
File tree
8 files changed
+86
-5
lines changed- src
- test/tarantool-tests
8 files changed
+86
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1201 | 1201 | | |
1202 | 1202 | | |
1203 | 1203 | | |
| 1204 | + | |
| 1205 | + | |
1204 | 1206 | | |
1205 | 1207 | | |
| 1208 | + | |
1206 | 1209 | | |
1207 | 1210 | | |
1208 | 1211 | | |
| |||
1213 | 1216 | | |
1214 | 1217 | | |
1215 | 1218 | | |
| 1219 | + | |
| 1220 | + | |
1216 | 1221 | | |
| 1222 | + | |
| 1223 | + | |
1217 | 1224 | | |
1218 | 1225 | | |
1219 | 1226 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1166 | 1166 | | |
1167 | 1167 | | |
1168 | 1168 | | |
| 1169 | + | |
| 1170 | + | |
| 1171 | + | |
| 1172 | + | |
1169 | 1173 | | |
1170 | 1174 | | |
1171 | 1175 | | |
| |||
1185 | 1189 | | |
1186 | 1190 | | |
1187 | 1191 | | |
| 1192 | + | |
| 1193 | + | |
| 1194 | + | |
| 1195 | + | |
1188 | 1196 | | |
1189 | 1197 | | |
1190 | 1198 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1382 | 1382 | | |
1383 | 1383 | | |
1384 | 1384 | | |
| 1385 | + | |
| 1386 | + | |
1385 | 1387 | | |
1386 | 1388 | | |
1387 | | - | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
1388 | 1392 | | |
1389 | 1393 | | |
1390 | 1394 | | |
| |||
1394 | 1398 | | |
1395 | 1399 | | |
1396 | 1400 | | |
| 1401 | + | |
| 1402 | + | |
1397 | 1403 | | |
1398 | 1404 | | |
| 1405 | + | |
| 1406 | + | |
1399 | 1407 | | |
1400 | 1408 | | |
1401 | 1409 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1418 | 1418 | | |
1419 | 1419 | | |
1420 | 1420 | | |
| 1421 | + | |
| 1422 | + | |
| 1423 | + | |
| 1424 | + | |
| 1425 | + | |
1421 | 1426 | | |
1422 | | - | |
1423 | 1427 | | |
1424 | 1428 | | |
1425 | 1429 | | |
| |||
1440 | 1444 | | |
1441 | 1445 | | |
1442 | 1446 | | |
1443 | | - | |
1444 | | - | |
| 1447 | + | |
| 1448 | + | |
| 1449 | + | |
| 1450 | + | |
| 1451 | + | |
| 1452 | + | |
1445 | 1453 | | |
1446 | 1454 | | |
1447 | 1455 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1755 | 1755 | | |
1756 | 1756 | | |
1757 | 1757 | | |
| 1758 | + | |
| 1759 | + | |
1758 | 1760 | | |
1759 | 1761 | | |
| 1762 | + | |
| 1763 | + | |
1760 | 1764 | | |
1761 | 1765 | | |
1762 | 1766 | | |
| |||
1767 | 1771 | | |
1768 | 1772 | | |
1769 | 1773 | | |
| 1774 | + | |
| 1775 | + | |
1770 | 1776 | | |
1771 | 1777 | | |
| 1778 | + | |
1772 | 1779 | | |
1773 | 1780 | | |
| 1781 | + | |
1774 | 1782 | | |
1775 | 1783 | | |
1776 | 1784 | | |
1777 | 1785 | | |
| 1786 | + | |
1778 | 1787 | | |
1779 | 1788 | | |
1780 | 1789 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1545 | 1545 | | |
1546 | 1546 | | |
1547 | 1547 | | |
| 1548 | + | |
| 1549 | + | |
| 1550 | + | |
1548 | 1551 | | |
1549 | 1552 | | |
1550 | 1553 | | |
| |||
1563 | 1566 | | |
1564 | 1567 | | |
1565 | 1568 | | |
| 1569 | + | |
| 1570 | + | |
| 1571 | + | |
1566 | 1572 | | |
1567 | 1573 | | |
1568 | 1574 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1914 | 1914 | | |
1915 | 1915 | | |
1916 | 1916 | | |
| 1917 | + | |
| 1918 | + | |
| 1919 | + | |
1917 | 1920 | | |
1918 | 1921 | | |
1919 | 1922 | | |
| |||
1925 | 1928 | | |
1926 | 1929 | | |
1927 | 1930 | | |
| 1931 | + | |
| 1932 | + | |
| 1933 | + | |
1928 | 1934 | | |
1929 | 1935 | | |
1930 | 1936 | | |
| |||
Lines changed: 30 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
| |||
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
10 | | - | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
52 | 53 | | |
53 | 54 | | |
54 | 55 | | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
55 | 84 | | |
0 commit comments