Commit 468e5fe
authored
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.1 parent b4c7def commit 468e5fe
File tree
3 files changed
+96
-12
lines changed- Lib
- test
- Misc/NEWS.d/next/Library
3 files changed
+96
-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 | | |
| |||
878 | 913 | | |
879 | 914 | | |
880 | 915 | | |
| 916 | + | |
881 | 917 | | |
882 | 918 | | |
883 | 919 | | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
884 | 924 | | |
885 | 925 | | |
886 | 926 | | |
887 | | - | |
| 927 | + | |
888 | 928 | | |
| 929 | + | |
889 | 930 | | |
| 931 | + | |
890 | 932 | | |
891 | 933 | | |
892 | 934 | | |
| |||
903 | 945 | | |
904 | 946 | | |
905 | 947 | | |
| 948 | + | |
906 | 949 | | |
907 | 950 | | |
908 | 951 | | |
| 952 | + | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
909 | 956 | | |
910 | 957 | | |
911 | | - | |
| 958 | + | |
912 | 959 | | |
913 | 960 | | |
914 | 961 | | |
915 | 962 | | |
916 | 963 | | |
917 | 964 | | |
918 | | - | |
| 965 | + | |
919 | 966 | | |
920 | 967 | | |
| 968 | + | |
921 | 969 | | |
| 970 | + | |
922 | 971 | | |
923 | 972 | | |
924 | 973 | | |
| |||
| 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