Commit f1e4f71
Fix hash table iteration safety issues.
Fix hash table removal during iteration to prevent corruption.
Use PostgreSQL-style single-pass removal for full flushes and
two-pass approach for partial removals. Add error checking for
hash_search(HASH_REMOVE) operations.
Add NULL checks for HASH_FIXED_SIZE hash tables that can return
NULL when full to prevent dereferencing NULL pointers.
Add spinlock protection for reading counter values to prevent torn
reads of 64-bit counters.1 parent ad22c07 commit f1e4f71
File tree
4 files changed
+104
-29
lines changed- src
4 files changed
+104
-29
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3002 | 3002 | | |
3003 | 3003 | | |
3004 | 3004 | | |
| 3005 | + | |
| 3006 | + | |
| 3007 | + | |
| 3008 | + | |
| 3009 | + | |
| 3010 | + | |
| 3011 | + | |
3005 | 3012 | | |
3006 | 3013 | | |
| 3014 | + | |
3007 | 3015 | | |
3008 | 3016 | | |
3009 | 3017 | | |
| |||
3031 | 3039 | | |
3032 | 3040 | | |
3033 | 3041 | | |
3034 | | - | |
3035 | | - | |
3036 | | - | |
3037 | | - | |
| 3042 | + | |
| 3043 | + | |
| 3044 | + | |
| 3045 | + | |
| 3046 | + | |
| 3047 | + | |
| 3048 | + | |
| 3049 | + | |
| 3050 | + | |
| 3051 | + | |
| 3052 | + | |
| 3053 | + | |
| 3054 | + | |
3038 | 3055 | | |
3039 | 3056 | | |
3040 | 3057 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
217 | 217 | | |
218 | 218 | | |
219 | 219 | | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
220 | 233 | | |
221 | 234 | | |
222 | 235 | | |
| |||
357 | 370 | | |
358 | 371 | | |
359 | 372 | | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
360 | 386 | | |
361 | 387 | | |
362 | 388 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1488 | 1488 | | |
1489 | 1489 | | |
1490 | 1490 | | |
1491 | | - | |
1492 | | - | |
1493 | 1491 | | |
1494 | 1492 | | |
1495 | 1493 | | |
| |||
1502 | 1500 | | |
1503 | 1501 | | |
1504 | 1502 | | |
1505 | | - | |
1506 | 1503 | | |
1507 | 1504 | | |
1508 | 1505 | | |
1509 | | - | |
1510 | 1506 | | |
1511 | 1507 | | |
1512 | 1508 | | |
| |||
1530 | 1526 | | |
1531 | 1527 | | |
1532 | 1528 | | |
1533 | | - | |
1534 | 1529 | | |
1535 | 1530 | | |
1536 | | - | |
1537 | 1531 | | |
1538 | 1532 | | |
1539 | 1533 | | |
1540 | | - | |
1541 | 1534 | | |
1542 | 1535 | | |
1543 | 1536 | | |
| |||
1567 | 1560 | | |
1568 | 1561 | | |
1569 | 1562 | | |
1570 | | - | |
1571 | | - | |
1572 | | - | |
| 1563 | + | |
| 1564 | + | |
1573 | 1565 | | |
1574 | | - | |
1575 | | - | |
1576 | | - | |
1577 | | - | |
1578 | | - | |
1579 | | - | |
1580 | | - | |
| 1566 | + | |
| 1567 | + | |
| 1568 | + | |
| 1569 | + | |
| 1570 | + | |
| 1571 | + | |
| 1572 | + | |
| 1573 | + | |
| 1574 | + | |
| 1575 | + | |
| 1576 | + | |
| 1577 | + | |
| 1578 | + | |
1581 | 1579 | | |
1582 | 1580 | | |
1583 | 1581 | | |
| |||
1592 | 1590 | | |
1593 | 1591 | | |
1594 | 1592 | | |
| 1593 | + | |
| 1594 | + | |
| 1595 | + | |
| 1596 | + | |
1595 | 1597 | | |
1596 | 1598 | | |
1597 | | - | |
| 1599 | + | |
1598 | 1600 | | |
1599 | 1601 | | |
1600 | 1602 | | |
1601 | 1603 | | |
1602 | 1604 | | |
1603 | | - | |
| 1605 | + | |
| 1606 | + | |
| 1607 | + | |
| 1608 | + | |
| 1609 | + | |
| 1610 | + | |
| 1611 | + | |
| 1612 | + | |
| 1613 | + | |
| 1614 | + | |
| 1615 | + | |
| 1616 | + | |
1604 | 1617 | | |
| 1618 | + | |
| 1619 | + | |
1605 | 1620 | | |
1606 | 1621 | | |
1607 | 1622 | | |
1608 | | - | |
1609 | | - | |
1610 | | - | |
1611 | | - | |
1612 | | - | |
1613 | | - | |
| 1623 | + | |
| 1624 | + | |
| 1625 | + | |
| 1626 | + | |
| 1627 | + | |
| 1628 | + | |
| 1629 | + | |
| 1630 | + | |
| 1631 | + | |
| 1632 | + | |
1614 | 1633 | | |
1615 | 1634 | | |
| 1635 | + | |
1616 | 1636 | | |
1617 | 1637 | | |
1618 | 1638 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1018 | 1018 | | |
1019 | 1019 | | |
1020 | 1020 | | |
| 1021 | + | |
| 1022 | + | |
| 1023 | + | |
| 1024 | + | |
| 1025 | + | |
| 1026 | + | |
| 1027 | + | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + | |
| 1031 | + | |
| 1032 | + | |
1021 | 1033 | | |
1022 | 1034 | | |
1023 | 1035 | | |
| |||
0 commit comments