- Notifications
You must be signed in to change notification settings - Fork4.9k
Commitcf1234a
committed
Fix deadlock danger when atomic ops are done under spinlock.
This was a danger only for --disable-spinlocks in combination withatomic operations unsupported by the current platform.While atomics.c was careful to signal that a separate semaphore oughtto be used when spinlock emulation is active, spin.c didn't actuallyimplement that mechanism. That's my (Andres') fault, it seems to havegotten lost during the development of the atomic operations support.Fix that issue and add test for nesting atomic operations inside aspinlock.Author: Andres FreundDiscussion:https://postgr.es/m/20200605023302.g6v3ydozy5txifji@alap3.anarazel.deBackpatch: 9.5-1 parent3b37a6d commitcf1234a
2 files changed
+119
-30
lines changedLines changed: 67 additions & 30 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
28 | 28 |
| |
29 | 29 |
| |
30 | 30 |
| |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
31 | 42 |
| |
32 |
| - | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
33 | 49 |
| |
34 | 50 |
| |
35 | 51 |
| |
| |||
38 | 54 |
| |
39 | 55 |
| |
40 | 56 |
| |
41 |
| - | |
| 57 | + | |
42 | 58 |
| |
43 | 59 |
| |
44 |
| - | |
45 |
| - | |
46 | 60 |
| |
47 | 61 |
| |
48 | 62 |
| |
49 | 63 |
| |
50 | 64 |
| |
51 | 65 |
| |
52 |
| - | |
| 66 | + | |
53 | 67 |
| |
54 |
| - | |
55 | 68 |
| |
56 |
| - | |
57 |
| - | |
58 |
| - | |
59 |
| - | |
60 |
| - | |
61 |
| - | |
62 |
| - | |
63 |
| - | |
64 |
| - | |
65 |
| - | |
66 |
| - | |
67 |
| - | |
68 |
| - | |
| 69 | + | |
69 | 70 |
| |
70 | 71 |
| |
71 | 72 |
| |
| |||
92 | 93 |
| |
93 | 94 |
| |
94 | 95 |
| |
95 |
| - | |
96 |
| - | |
97 |
| - | |
98 |
| - | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
99 | 106 |
| |
100 | 107 |
| |
101 |
| - | |
| 108 | + | |
102 | 109 |
| |
103 | 110 |
| |
104 | 111 |
| |
105 | 112 |
| |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
106 | 120 |
| |
107 | 121 |
| |
108 | 122 |
| |
109 | 123 |
| |
110 |
| - | |
111 |
| - | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
112 | 149 |
| |
113 | 150 |
| |
114 | 151 |
| |
115 | 152 |
| |
116 | 153 |
| |
117 | 154 |
| |
118 | 155 |
| |
119 |
| - | |
120 |
| - | |
| 156 | + | |
| 157 | + | |
121 | 158 |
| |
122 | 159 |
| |
123 | 160 |
| |
| |||
134 | 171 |
| |
135 | 172 |
| |
136 | 173 |
| |
137 |
| - | |
138 |
| - | |
| 174 | + | |
| 175 | + | |
139 | 176 |
| |
140 | 177 |
| |
141 | 178 |
| |
|
Lines changed: 52 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
898 | 898 |
| |
899 | 899 |
| |
900 | 900 |
| |
| 901 | + | |
| 902 | + | |
| 903 | + | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
| 915 | + | |
| 916 | + | |
| 917 | + | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
| 930 | + | |
| 931 | + | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
901 | 951 |
| |
902 | 952 |
| |
903 | 953 |
| |
| |||
914 | 964 |
| |
915 | 965 |
| |
916 | 966 |
| |
| 967 | + | |
| 968 | + | |
917 | 969 |
| |
918 | 970 |
| |
919 | 971 |
| |
|
0 commit comments
Comments
(0)