Commit e40a97a
authored
* bpo-36402: Fix threading._shutdown() race condition (GH-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() (GH-14047)
Remove the _tstate_lock from _shutdown_locks, don't remove None.
(cherry picked from commit 6f75c87)
1 parent 032bf30 commit e40a97a
File tree
3 files changed
+120
-12
lines changed- Lib
- test
- Misc/NEWS.d/next/Library
3 files changed
+120
-12
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
583 | 583 | | |
584 | 584 | | |
585 | 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 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
586 | 621 | | |
587 | 622 | | |
588 | 623 | | |
| |||
703 | 738 | | |
704 | 739 | | |
705 | 740 | | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
706 | 765 | | |
707 | 766 | | |
708 | 767 | | |
| |||
878 | 937 | | |
879 | 938 | | |
880 | 939 | | |
| 940 | + | |
881 | 941 | | |
882 | 942 | | |
883 | 943 | | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
884 | 948 | | |
885 | 949 | | |
886 | 950 | | |
887 | | - | |
| 951 | + | |
888 | 952 | | |
| 953 | + | |
889 | 954 | | |
| 955 | + | |
890 | 956 | | |
891 | 957 | | |
892 | 958 | | |
| |||
903 | 969 | | |
904 | 970 | | |
905 | 971 | | |
| 972 | + | |
906 | 973 | | |
907 | 974 | | |
908 | 975 | | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
909 | 980 | | |
910 | 981 | | |
911 | | - | |
| 982 | + | |
912 | 983 | | |
913 | 984 | | |
914 | 985 | | |
915 | 986 | | |
916 | 987 | | |
917 | 988 | | |
918 | | - | |
| 989 | + | |
919 | 990 | | |
920 | 991 | | |
| 992 | + | |
921 | 993 | | |
| 994 | + | |
922 | 995 | | |
923 | 996 | | |
924 | 997 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
739 | 739 | | |
740 | 740 | | |
741 | 741 | | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
742 | 747 | | |
743 | 748 | | |
744 | 749 | | |
| |||
903 | 908 | | |
904 | 909 | | |
905 | 910 | | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
906 | 915 | | |
907 | 916 | | |
908 | 917 | | |
| |||
954 | 963 | | |
955 | 964 | | |
956 | 965 | | |
| 966 | + | |
| 967 | + | |
| 968 | + | |
957 | 969 | | |
958 | 970 | | |
959 | 971 | | |
| |||
1342 | 1354 | | |
1343 | 1355 | | |
1344 | 1356 | | |
| 1357 | + | |
| 1358 | + | |
| 1359 | + | |
1345 | 1360 | | |
1346 | 1361 | | |
1347 | 1362 | | |
| |||
1350 | 1365 | | |
1351 | 1366 | | |
1352 | 1367 | | |
| 1368 | + | |
| 1369 | + | |
1353 | 1370 | | |
1354 | 1371 | | |
1355 | 1372 | | |
1356 | 1373 | | |
1357 | 1374 | | |
1358 | 1375 | | |
1359 | 1376 | | |
1360 | | - | |
1361 | | - | |
1362 | | - | |
1363 | | - | |
1364 | 1377 | | |
1365 | | - | |
1366 | | - | |
1367 | | - | |
1368 | | - | |
1369 | | - | |
| 1378 | + | |
| 1379 | + | |
| 1380 | + | |
| 1381 | + | |
| 1382 | + | |
| 1383 | + | |
| 1384 | + | |
| 1385 | + | |
| 1386 | + | |
| 1387 | + | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
| 1392 | + | |
| 1393 | + | |
| 1394 | + | |
1370 | 1395 | | |
1371 | 1396 | | |
1372 | 1397 | | |
| |||
1392 | 1417 | | |
1393 | 1418 | | |
1394 | 1419 | | |
| 1420 | + | |
1395 | 1421 | | |
1396 | 1422 | | |
1397 | 1423 | | |
1398 | 1424 | | |
1399 | 1425 | | |
1400 | 1426 | | |
| 1427 | + | |
| 1428 | + | |
| 1429 | + | |
| 1430 | + | |
| 1431 | + | |
1401 | 1432 | | |
1402 | 1433 | | |
1403 | 1434 | | |
| |||
Lines changed: 4 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
0 commit comments