forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit4a70f82
committed
Add nbtree Valgrind buffer lock checks.
Holding just a buffer pin (with no buffer lock) on an nbtree buffer/pageprovides very weak guarantees, especially compared to heapam, where it'soften safe to read a page while only holding a buffer pin. This commithas Valgrind enforce the following rule: it is never okay to access annbtree buffer without holding both a pin and a lock on the buffer.A draft version of this patch detected questionable code that wascleaned up by commitsfa7ff64 and7154aa1. The code in question usedto access an nbtree buffer page's special/opaque area with no bufferlock (only a buffer pin). This practice (which isn't obviously unsafe)is hereby formally disallowed in nbtree. There doesn't seem to be anyreason to allow it, and banning it keeps things simple for Valgrind.The new checks are implemented by adding custom nbtree client requests(located in LockBuffer() wrapper functions); these requests are"superimposed" on top of the generic bufmgr.c Valgrind client requestsadded by commit1e0dfd1. No custom resource management cleanup code isneeded to undo the effects of marking buffers as non-accessible underthis scheme.Author: Peter GeogheganReviewed-By: Anastasia Lubennikova, Georgios KokolatosDiscussion:https://postgr.es/m/CAH2-WzkLgyN3zBvRZ1pkNJThC=xi_0gpWRUb_45eexLH1+k2_Q@mail.gmail.com1 parent670c0a1 commit4a70f82
File tree
8 files changed
+170
-44
lines changed- src
- backend
- access/nbtree
- storage/buffer
- include
- access
8 files changed
+170
-44
lines changedLines changed: 1 addition & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
303 | 303 |
| |
304 | 304 |
| |
305 | 305 |
| |
306 |
| - | |
| 306 | + | |
307 | 307 |
| |
308 | 308 |
| |
309 | 309 |
| |
|
Lines changed: 126 additions & 19 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
32 | 32 |
| |
33 | 33 |
| |
34 | 34 |
| |
| 35 | + | |
35 | 36 |
| |
36 | 37 |
| |
37 | 38 |
| |
| |||
198 | 199 |
| |
199 | 200 |
| |
200 | 201 |
| |
201 |
| - | |
202 |
| - | |
| 202 | + | |
| 203 | + | |
203 | 204 |
| |
204 | 205 |
| |
205 | 206 |
| |
| |||
340 | 341 |
| |
341 | 342 |
| |
342 | 343 |
| |
343 |
| - | |
344 |
| - | |
| 344 | + | |
| 345 | + | |
345 | 346 |
| |
346 | 347 |
| |
347 | 348 |
| |
| |||
434 | 435 |
| |
435 | 436 |
| |
436 | 437 |
| |
437 |
| - | |
438 |
| - | |
| 438 | + | |
| 439 | + | |
439 | 440 |
| |
440 | 441 |
| |
441 | 442 |
| |
| |||
783 | 784 |
| |
784 | 785 |
| |
785 | 786 |
| |
| 787 | + | |
| 788 | + | |
| 789 | + | |
| 790 | + | |
786 | 791 |
| |
787 | 792 |
| |
788 | 793 |
| |
789 |
| - | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
790 | 801 |
| |
791 | 802 |
| |
792 | 803 |
| |
| |||
797 | 808 |
| |
798 | 809 |
| |
799 | 810 |
| |
800 |
| - | |
| 811 | + | |
801 | 812 |
| |
802 | 813 |
| |
803 | 814 |
| |
| |||
837 | 848 |
| |
838 | 849 |
| |
839 | 850 |
| |
840 |
| - | |
| 851 | + | |
841 | 852 |
| |
842 | 853 |
| |
843 | 854 |
| |
| |||
890 | 901 |
| |
891 | 902 |
| |
892 | 903 |
| |
893 |
| - | |
| 904 | + | |
894 | 905 |
| |
895 | 906 |
| |
896 | 907 |
| |
| |||
931 | 942 |
| |
932 | 943 |
| |
933 | 944 |
| |
934 |
| - | |
| 945 | + | |
935 | 946 |
| |
936 |
| - | |
| 947 | + | |
| 948 | + | |
937 | 949 |
| |
938 | 950 |
| |
939 | 951 |
| |
| |||
946 | 958 |
| |
947 | 959 |
| |
948 | 960 |
| |
949 |
| - | |
| 961 | + | |
| 962 | + | |
| 963 | + | |
| 964 | + | |
| 965 | + | |
| 966 | + | |
| 967 | + | |
| 968 | + | |
| 969 | + | |
| 970 | + | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
| 988 | + | |
| 989 | + | |
| 990 | + | |
| 991 | + | |
| 992 | + | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
| 996 | + | |
| 997 | + | |
| 998 | + | |
| 999 | + | |
| 1000 | + | |
| 1001 | + | |
| 1002 | + | |
| 1003 | + | |
| 1004 | + | |
| 1005 | + | |
| 1006 | + | |
| 1007 | + | |
| 1008 | + | |
| 1009 | + | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
| 1017 | + | |
| 1018 | + | |
| 1019 | + | |
| 1020 | + | |
| 1021 | + | |
| 1022 | + | |
| 1023 | + | |
| 1024 | + | |
| 1025 | + | |
| 1026 | + | |
| 1027 | + | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + | |
| 1031 | + | |
| 1032 | + | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
950 | 1057 |
| |
951 | 1058 |
| |
952 | 1059 |
| |
| |||
1580 | 1687 |
| |
1581 | 1688 |
| |
1582 | 1689 |
| |
1583 |
| - | |
| 1690 | + | |
1584 | 1691 |
| |
1585 | 1692 |
| |
1586 | 1693 |
| |
| |||
1616 | 1723 |
| |
1617 | 1724 |
| |
1618 | 1725 |
| |
1619 |
| - | |
| 1726 | + | |
1620 | 1727 |
| |
1621 | 1728 |
| |
1622 | 1729 |
| |
| |||
1970 | 2077 |
| |
1971 | 2078 |
| |
1972 | 2079 |
| |
1973 |
| - | |
| 2080 | + | |
1974 | 2081 |
| |
1975 | 2082 |
| |
1976 | 2083 |
| |
| |||
2005 | 2112 |
| |
2006 | 2113 |
| |
2007 | 2114 |
| |
2008 |
| - | |
| 2115 | + | |
2009 | 2116 |
| |
2010 | 2117 |
| |
2011 | 2118 |
| |
| |||
2022 | 2129 |
| |
2023 | 2130 |
| |
2024 | 2131 |
| |
2025 |
| - | |
| 2132 | + | |
2026 | 2133 |
| |
2027 | 2134 |
| |
2028 | 2135 |
| |
| |||
2072 | 2179 |
| |
2073 | 2180 |
| |
2074 | 2181 |
| |
2075 |
| - | |
| 2182 | + | |
2076 | 2183 |
| |
2077 | 2184 |
| |
2078 | 2185 |
| |
|
Lines changed: 2 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1115 | 1115 |
| |
1116 | 1116 |
| |
1117 | 1117 |
| |
1118 |
| - | |
| 1118 | + | |
1119 | 1119 |
| |
1120 | 1120 |
| |
1121 | 1121 |
| |
| |||
1222 | 1222 |
| |
1223 | 1223 |
| |
1224 | 1224 |
| |
1225 |
| - | |
1226 |
| - | |
| 1225 | + | |
1227 | 1226 |
| |
1228 | 1227 |
| |
1229 | 1228 |
| |
|
Lines changed: 11 additions & 12 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
64 | 64 |
| |
65 | 65 |
| |
66 | 66 |
| |
67 |
| - | |
| 67 | + | |
68 | 68 |
| |
69 | 69 |
| |
70 | 70 |
| |
| |||
187 | 187 |
| |
188 | 188 |
| |
189 | 189 |
| |
190 |
| - | |
191 |
| - | |
| 190 | + | |
| 191 | + | |
192 | 192 |
| |
193 | 193 |
| |
194 |
| - | |
195 |
| - | |
196 |
| - | |
197 |
| - | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
198 | 197 |
| |
199 | 198 |
| |
200 | 199 |
| |
| |||
289 | 288 |
| |
290 | 289 |
| |
291 | 290 |
| |
292 |
| - | |
293 |
| - | |
| 291 | + | |
| 292 | + | |
294 | 293 |
| |
295 | 294 |
| |
296 | 295 |
| |
| |||
1413 | 1412 |
| |
1414 | 1413 |
| |
1415 | 1414 |
| |
1416 |
| - | |
| 1415 | + | |
1417 | 1416 |
| |
1418 | 1417 |
| |
1419 | 1418 |
| |
| |||
2061 | 2060 |
| |
2062 | 2061 |
| |
2063 | 2062 |
| |
2064 |
| - | |
| 2063 | + | |
2065 | 2064 |
| |
2066 | 2065 |
| |
2067 | 2066 |
| |
| |||
2439 | 2438 |
| |
2440 | 2439 |
| |
2441 | 2440 |
| |
2442 |
| - | |
| 2441 | + | |
2443 | 2442 |
| |
2444 | 2443 |
| |
2445 | 2444 |
| |
|
Lines changed: 2 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1744 | 1744 |
| |
1745 | 1745 |
| |
1746 | 1746 |
| |
1747 |
| - | |
| 1747 | + | |
1748 | 1748 |
| |
1749 | 1749 |
| |
1750 | 1750 |
| |
| |||
1885 | 1885 |
| |
1886 | 1886 |
| |
1887 | 1887 |
| |
1888 |
| - | |
| 1888 | + | |
1889 | 1889 |
| |
1890 | 1890 |
| |
1891 | 1891 |
| |
|
0 commit comments
Comments
(0)