Commit b2e71ff
authored
In gh-120009 I used an atexit hook to finalize the _datetime module's static types at interpreter shutdown. However, atexit hooks are executed very early in finalization, which is a problem in the few cases where a subclass of one of those static types is still alive until the final GC collection. The static builtin types don't have this probably because they are finalized toward the end, after the final GC collection. To avoid the problem for _datetime, I have applied a similar approach here.
Also, credit goes to @mgorny and @neonene for the new tests.
FYI, I would have liked to take a slightly cleaner approach with managed static types, but wanted to get a smaller fix in first for the sake of backporting. I'll circle back to the cleaner approach with a future change on the main branch.
1 parent 05df063 commit b2e71ff
File tree
6 files changed
+133
-71
lines changed- Include/internal
- Lib/test
- Misc/NEWS.d/next/Library
- Modules
- Objects
- Python
6 files changed
+133
-71
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
20 | 27 | | |
21 | 28 | | |
22 | 29 | | |
23 | 30 | | |
24 | 31 | | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
25 | 39 | | |
26 | 40 | | |
27 | 41 | | |
| |||
42 | 56 | | |
43 | 57 | | |
44 | 58 | | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | 59 | | |
51 | 60 | | |
52 | 61 | | |
| |||
133 | 142 | | |
134 | 143 | | |
135 | 144 | | |
| 145 | + | |
136 | 146 | | |
137 | 147 | | |
138 | 148 | | |
| |||
171 | 181 | | |
172 | 182 | | |
173 | 183 | | |
174 | | - | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | 184 | | |
179 | 185 | | |
180 | 186 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
| 26 | + | |
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| |||
6822 | 6822 | | |
6823 | 6823 | | |
6824 | 6824 | | |
| 6825 | + | |
| 6826 | + | |
| 6827 | + | |
| 6828 | + | |
| 6829 | + | |
| 6830 | + | |
| 6831 | + | |
| 6832 | + | |
| 6833 | + | |
| 6834 | + | |
| 6835 | + | |
| 6836 | + | |
| 6837 | + | |
| 6838 | + | |
| 6839 | + | |
| 6840 | + | |
| 6841 | + | |
| 6842 | + | |
| 6843 | + | |
| 6844 | + | |
| 6845 | + | |
| 6846 | + | |
| 6847 | + | |
| 6848 | + | |
| 6849 | + | |
| 6850 | + | |
| 6851 | + | |
| 6852 | + | |
| 6853 | + | |
| 6854 | + | |
| 6855 | + | |
| 6856 | + | |
| 6857 | + | |
| 6858 | + | |
| 6859 | + | |
| 6860 | + | |
| 6861 | + | |
| 6862 | + | |
| 6863 | + | |
| 6864 | + | |
| 6865 | + | |
| 6866 | + | |
6825 | 6867 | | |
6826 | 6868 | | |
6827 | 6869 | | |
| |||
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7129 | 7129 | | |
7130 | 7130 | | |
7131 | 7131 | | |
7132 | | - | |
7133 | | - | |
7134 | | - | |
7135 | | - | |
7136 | | - | |
7137 | | - | |
7138 | | - | |
7139 | | - | |
7140 | | - | |
7141 | | - | |
7142 | | - | |
7143 | | - | |
7144 | | - | |
7145 | | - | |
7146 | | - | |
7147 | | - | |
7148 | | - | |
7149 | | - | |
7150 | | - | |
7151 | | - | |
7152 | | - | |
7153 | | - | |
7154 | | - | |
7155 | | - | |
7156 | | - | |
7157 | | - | |
7158 | | - | |
7159 | | - | |
7160 | | - | |
7161 | | - | |
7162 | | - | |
7163 | 7132 | | |
7164 | 7133 | | |
7165 | 7134 | | |
| |||
7182 | 7151 | | |
7183 | 7152 | | |
7184 | 7153 | | |
7185 | | - | |
7186 | | - | |
7187 | | - | |
7188 | | - | |
7189 | | - | |
7190 | | - | |
7191 | | - | |
7192 | | - | |
7193 | | - | |
7194 | | - | |
7195 | | - | |
7196 | | - | |
7197 | | - | |
7198 | 7154 | | |
7199 | 7155 | | |
7200 | 7156 | | |
| |||
7379 | 7335 | | |
7380 | 7336 | | |
7381 | 7337 | | |
7382 | | - | |
7383 | | - | |
| 7338 | + | |
| 7339 | + | |
7384 | 7340 | | |
7385 | 7341 | | |
7386 | 7342 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
159 | 159 | | |
160 | 160 | | |
161 | 161 | | |
162 | | - | |
163 | | - | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
164 | 165 | | |
165 | | - | |
166 | | - | |
167 | | - | |
| 166 | + | |
| 167 | + | |
168 | 168 | | |
169 | | - | |
170 | | - | |
171 | | - | |
172 | | - | |
173 | | - | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
174 | 184 | | |
175 | 185 | | |
176 | 186 | | |
| |||
202 | 212 | | |
203 | 213 | | |
204 | 214 | | |
| 215 | + | |
| 216 | + | |
205 | 217 | | |
206 | 218 | | |
207 | 219 | | |
| |||
228 | 240 | | |
229 | 241 | | |
230 | 242 | | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
231 | 258 | | |
232 | 259 | | |
233 | 260 | | |
| |||
256 | 283 | | |
257 | 284 | | |
258 | 285 | | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
259 | 291 | | |
260 | | - | |
261 | | - | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
262 | 298 | | |
263 | 299 | | |
264 | 300 | | |
265 | 301 | | |
266 | 302 | | |
| 303 | + | |
267 | 304 | | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
268 | 308 | | |
269 | 309 | | |
270 | 310 | | |
| |||
840 | 880 | | |
841 | 881 | | |
842 | 882 | | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
843 | 888 | | |
844 | | - | |
845 | 889 | | |
846 | 890 | | |
847 | 891 | | |
| |||
5834 | 5878 | | |
5835 | 5879 | | |
5836 | 5880 | | |
5837 | | - | |
| 5881 | + | |
5838 | 5882 | | |
5839 | | - | |
| 5883 | + | |
| 5884 | + | |
| 5885 | + | |
| 5886 | + | |
| 5887 | + | |
| 5888 | + | |
| 5889 | + | |
| 5890 | + | |
| 5891 | + | |
| 5892 | + | |
| 5893 | + | |
| 5894 | + | |
5840 | 5895 | | |
5841 | 5896 | | |
5842 | 5897 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1818 | 1818 | | |
1819 | 1819 | | |
1820 | 1820 | | |
| 1821 | + | |
1821 | 1822 | | |
1822 | 1823 | | |
1823 | 1824 | | |
| |||
0 commit comments