Commit a50f9b6
committed
gh-108987: Fix _thread.start_new_thread() race condition
Fix _thread.start_new_thread() race condition. If a thread is created
during Python finalization, the newly spawned thread now exits
immediately instead of trying to access freed memory and lead to a
crash.
thread_run() calls PyEval_AcquireThread() which checks if the thread
must exit. The problem was that tstate was dereferenced earlier in
_PyThreadState_Bind() which leads to a crash most of the time.
Move _PyThreadState_CheckConsistency() from thread_run() to
_PyThreadState_Bind().1 parent f63d378 commit a50f9b6
File tree
5 files changed
+69
-41
lines changed- Include/internal
- Misc/NEWS.d/next/Library
- Modules
- Python
5 files changed
+69
-41
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
| 74 | + | |
| 75 | + | |
74 | 76 | | |
75 | 77 | | |
76 | 78 | | |
| |||
Lines changed: 4 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1051 | 1051 | | |
1052 | 1052 | | |
1053 | 1053 | | |
1054 | | - | |
| 1054 | + | |
1055 | 1055 | | |
1056 | 1056 | | |
1057 | 1057 | | |
1058 | | - | |
1059 | | - | |
1060 | 1058 | | |
1061 | 1059 | | |
1062 | 1060 | | |
1063 | 1061 | | |
1064 | | - | |
| 1062 | + | |
1065 | 1063 | | |
1066 | | - | |
1067 | | - | |
1068 | | - | |
| 1064 | + | |
| 1065 | + | |
| 1066 | + | |
| 1067 | + | |
| 1068 | + | |
1069 | 1069 | | |
1070 | 1070 | | |
1071 | 1071 | | |
| |||
1076 | 1076 | | |
1077 | 1077 | | |
1078 | 1078 | | |
1079 | | - | |
1080 | | - | |
1081 | | - | |
| 1079 | + | |
| 1080 | + | |
| 1081 | + | |
| 1082 | + | |
| 1083 | + | |
| 1084 | + | |
| 1085 | + | |
| 1086 | + | |
| 1087 | + | |
| 1088 | + | |
| 1089 | + | |
| 1090 | + | |
| 1091 | + | |
| 1092 | + | |
| 1093 | + | |
| 1094 | + | |
| 1095 | + | |
| 1096 | + | |
1082 | 1097 | | |
1083 | 1098 | | |
1084 | 1099 | | |
| |||
1097 | 1112 | | |
1098 | 1113 | | |
1099 | 1114 | | |
1100 | | - | |
| 1115 | + | |
| 1116 | + | |
1101 | 1117 | | |
1102 | 1118 | | |
1103 | 1119 | | |
1104 | 1120 | | |
| 1121 | + | |
1105 | 1122 | | |
1106 | 1123 | | |
1107 | 1124 | | |
| 1125 | + | |
1108 | 1126 | | |
1109 | 1127 | | |
1110 | 1128 | | |
| |||
1128 | 1146 | | |
1129 | 1147 | | |
1130 | 1148 | | |
1131 | | - | |
1132 | 1149 | | |
1133 | 1150 | | |
1134 | 1151 | | |
| |||
1171 | 1188 | | |
1172 | 1189 | | |
1173 | 1190 | | |
1174 | | - | |
1175 | | - | |
| 1191 | + | |
1176 | 1192 | | |
1177 | 1193 | | |
1178 | 1194 | | |
1179 | 1195 | | |
1180 | 1196 | | |
1181 | 1197 | | |
1182 | 1198 | | |
1183 | | - | |
1184 | 1199 | | |
1185 | 1200 | | |
1186 | 1201 | | |
| |||
1189 | 1204 | | |
1190 | 1205 | | |
1191 | 1206 | | |
1192 | | - | |
| 1207 | + | |
1193 | 1208 | | |
1194 | 1209 | | |
1195 | 1210 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
329 | 329 | | |
330 | 330 | | |
331 | 331 | | |
332 | | - | |
333 | | - | |
334 | | - | |
335 | | - | |
336 | | - | |
337 | | - | |
338 | | - | |
339 | | - | |
340 | | - | |
341 | | - | |
342 | | - | |
343 | | - | |
344 | | - | |
345 | | - | |
346 | | - | |
347 | | - | |
348 | | - | |
349 | | - | |
350 | | - | |
351 | | - | |
352 | | - | |
353 | | - | |
354 | 332 | | |
355 | 333 | | |
356 | 334 | | |
| |||
366 | 344 | | |
367 | 345 | | |
368 | 346 | | |
369 | | - | |
| 347 | + | |
370 | 348 | | |
371 | 349 | | |
372 | 350 | | |
| |||
404 | 382 | | |
405 | 383 | | |
406 | 384 | | |
407 | | - | |
| 385 | + | |
408 | 386 | | |
409 | 387 | | |
410 | 388 | | |
| |||
444 | 422 | | |
445 | 423 | | |
446 | 424 | | |
447 | | - | |
| 425 | + | |
448 | 426 | | |
449 | 427 | | |
450 | 428 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1907 | 1907 | | |
1908 | 1908 | | |
1909 | 1909 | | |
| 1910 | + | |
| 1911 | + | |
| 1912 | + | |
| 1913 | + | |
1910 | 1914 | | |
1911 | 1915 | | |
1912 | 1916 | | |
| |||
2908 | 2912 | | |
2909 | 2913 | | |
2910 | 2914 | | |
| 2915 | + | |
| 2916 | + | |
| 2917 | + | |
| 2918 | + | |
| 2919 | + | |
| 2920 | + | |
| 2921 | + | |
| 2922 | + | |
| 2923 | + | |
| 2924 | + | |
| 2925 | + | |
| 2926 | + | |
| 2927 | + | |
| 2928 | + | |
| 2929 | + | |
| 2930 | + | |
| 2931 | + | |
| 2932 | + | |
| 2933 | + | |
| 2934 | + | |
| 2935 | + | |
| 2936 | + | |
| 2937 | + | |
| 2938 | + | |
| 2939 | + | |
2911 | 2940 | | |
2912 | 2941 | | |
2913 | 2942 | | |
0 commit comments