Commit 247fb9d
[3.8] bpo-36402: Fix threading._shutdown() race condition (pythonGH-13948) (pythonGH-14050)
* bpo-36402: Fix threading._shutdown() race condition (pythonGH-13948)
Fix a race condition at Python shutdown when waiting for threads.
Wait until the Python thread state of all non-daemon threads get
deleted (join all non-daemon threads), rather than just wait until
Python threads complete.
* Add threading._shutdown_locks: set of Thread._tstate_lock locks
of non-daemon threads used by _shutdown() to wait until all Python
thread states get deleted. See Thread._set_tstate_lock().
* Add also threading._shutdown_locks_lock to protect access to
threading._shutdown_locks.
* Add test_finalization_shutdown() test.
(cherry picked from commit 468e5fe)
* bpo-36402: Fix threading.Thread._stop() (pythonGH-14047)
Remove the _tstate_lock from _shutdown_locks, don't remove None.
(cherry picked from commit 6f75c87)
(cherry picked from commit e40a97a)
Co-authored-by: Victor Stinner <vstinner@redhat.com>1 parent b4c8ef7 commit 247fb9d
3 files changed
Lines changed: 120 additions & 12 deletions
File tree
- Lib
- test
- Misc/NEWS.d/next/Library
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
578 | 578 | | |
579 | 579 | | |
580 | 580 | | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
581 | 616 | | |
582 | 617 | | |
583 | 618 | | |
| |||
698 | 733 | | |
699 | 734 | | |
700 | 735 | | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
701 | 760 | | |
702 | 761 | | |
703 | 762 | | |
| |||
875 | 934 | | |
876 | 935 | | |
877 | 936 | | |
| 937 | + | |
878 | 938 | | |
879 | 939 | | |
880 | 940 | | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
881 | 945 | | |
882 | 946 | | |
883 | 947 | | |
884 | | - | |
| 948 | + | |
885 | 949 | | |
| 950 | + | |
886 | 951 | | |
| 952 | + | |
887 | 953 | | |
888 | 954 | | |
889 | 955 | | |
| |||
900 | 966 | | |
901 | 967 | | |
902 | 968 | | |
| 969 | + | |
903 | 970 | | |
904 | 971 | | |
905 | 972 | | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
906 | 977 | | |
907 | 978 | | |
908 | | - | |
| 979 | + | |
909 | 980 | | |
910 | 981 | | |
911 | 982 | | |
912 | 983 | | |
913 | 984 | | |
914 | 985 | | |
915 | | - | |
| 986 | + | |
916 | 987 | | |
917 | 988 | | |
| 989 | + | |
918 | 990 | | |
| 991 | + | |
919 | 992 | | |
920 | 993 | | |
921 | 994 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
733 | 733 | | |
734 | 734 | | |
735 | 735 | | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
736 | 741 | | |
737 | 742 | | |
738 | 743 | | |
| |||
899 | 904 | | |
900 | 905 | | |
901 | 906 | | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
902 | 911 | | |
903 | 912 | | |
904 | 913 | | |
| |||
987 | 996 | | |
988 | 997 | | |
989 | 998 | | |
| 999 | + | |
| 1000 | + | |
| 1001 | + | |
990 | 1002 | | |
991 | 1003 | | |
992 | 1004 | | |
| |||
1261 | 1273 | | |
1262 | 1274 | | |
1263 | 1275 | | |
| 1276 | + | |
| 1277 | + | |
| 1278 | + | |
1264 | 1279 | | |
1265 | 1280 | | |
1266 | 1281 | | |
| |||
1269 | 1284 | | |
1270 | 1285 | | |
1271 | 1286 | | |
| 1287 | + | |
| 1288 | + | |
1272 | 1289 | | |
1273 | 1290 | | |
1274 | 1291 | | |
1275 | 1292 | | |
1276 | 1293 | | |
1277 | 1294 | | |
1278 | 1295 | | |
1279 | | - | |
1280 | | - | |
1281 | | - | |
1282 | | - | |
1283 | 1296 | | |
1284 | | - | |
1285 | | - | |
1286 | | - | |
1287 | | - | |
1288 | | - | |
| 1297 | + | |
| 1298 | + | |
| 1299 | + | |
| 1300 | + | |
| 1301 | + | |
| 1302 | + | |
| 1303 | + | |
| 1304 | + | |
| 1305 | + | |
| 1306 | + | |
| 1307 | + | |
| 1308 | + | |
| 1309 | + | |
| 1310 | + | |
| 1311 | + | |
| 1312 | + | |
| 1313 | + | |
1289 | 1314 | | |
1290 | 1315 | | |
1291 | 1316 | | |
| |||
1311 | 1336 | | |
1312 | 1337 | | |
1313 | 1338 | | |
| 1339 | + | |
1314 | 1340 | | |
1315 | 1341 | | |
1316 | 1342 | | |
1317 | 1343 | | |
1318 | 1344 | | |
1319 | 1345 | | |
| 1346 | + | |
| 1347 | + | |
| 1348 | + | |
| 1349 | + | |
| 1350 | + | |
1320 | 1351 | | |
1321 | 1352 | | |
1322 | 1353 | | |
| |||
Lines changed: 4 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
0 commit comments