Commit ca22147
authored
pythongh-111924: Fix data races when swapping allocators (pythongh-130287)
CPython current temporarily changes `PYMEM_DOMAIN_RAW` to the default
allocator during initialization and shutdown. The motivation is to
ensure that core runtime structures are allocated and freed using the
same allocator. However, modifying the current allocator changes global
state and is not thread-safe even with the GIL. Other threads may be
allocating or freeing objects use PYMEM_DOMAIN_RAW; they are not
required to hold the GIL to call PyMem_RawMalloc/PyMem_RawFree.
This adds new internal-only functions like `_PyMem_DefaultRawMalloc`
that aren't affected by calls to `PyMem_SetAllocator()`, so they're
appropriate for Python runtime initialization and finalization. Use
these calls in places where we previously swapped to the default raw
allocator.1 parent 568db40 commit ca22147
File tree
9 files changed
+155
-154
lines changed- Include/internal
- Objects
- Python
- Tools/tsan
9 files changed
+155
-154
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | 58 | | |
66 | 59 | | |
67 | 60 | | |
| |||
113 | 106 | | |
114 | 107 | | |
115 | 108 | | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
116 | 116 | | |
117 | 117 | | |
118 | 118 | | |
| |||
132 | 132 | | |
133 | 133 | | |
134 | 134 | | |
135 | | - | |
136 | 135 | | |
137 | 136 | | |
138 | 137 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
344 | 344 | | |
345 | 345 | | |
346 | 346 | | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
347 | 409 | | |
348 | 410 | | |
349 | 411 | | |
| |||
492 | 554 | | |
493 | 555 | | |
494 | 556 | | |
495 | | - | |
496 | | - | |
497 | | - | |
498 | | - | |
499 | | - | |
500 | | - | |
501 | | - | |
502 | | - | |
503 | | - | |
504 | | - | |
505 | | - | |
506 | 557 | | |
507 | 558 | | |
508 | 559 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
| 16 | + | |
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| |||
2387 | 2387 | | |
2388 | 2388 | | |
2389 | 2389 | | |
2390 | | - | |
2391 | | - | |
2392 | | - | |
2393 | 2390 | | |
2394 | 2391 | | |
2395 | 2392 | | |
2396 | 2393 | | |
2397 | | - | |
| 2394 | + | |
2398 | 2395 | | |
2399 | 2396 | | |
2400 | 2397 | | |
| |||
2408 | 2405 | | |
2409 | 2406 | | |
2410 | 2407 | | |
2411 | | - | |
2412 | 2408 | | |
2413 | | - | |
2414 | 2409 | | |
2415 | 2410 | | |
2416 | 2411 | | |
| |||
2445 | 2440 | | |
2446 | 2441 | | |
2447 | 2442 | | |
2448 | | - | |
| 2443 | + | |
2449 | 2444 | | |
2450 | 2445 | | |
2451 | 2446 | | |
| |||
2459 | 2454 | | |
2460 | 2455 | | |
2461 | 2456 | | |
2462 | | - | |
| 2457 | + | |
2463 | 2458 | | |
2464 | 2459 | | |
2465 | 2460 | | |
| |||
3977 | 3972 | | |
3978 | 3973 | | |
3979 | 3974 | | |
3980 | | - | |
3981 | | - | |
3982 | | - | |
3983 | | - | |
3984 | | - | |
3985 | | - | |
3986 | | - | |
3987 | | - | |
3988 | 3975 | | |
3989 | | - | |
3990 | | - | |
| 3976 | + | |
3991 | 3977 | | |
3992 | | - | |
3993 | | - | |
3994 | | - | |
3995 | | - | |
| 3978 | + | |
3996 | 3979 | | |
3997 | 3980 | | |
3998 | 3981 | | |
| |||
4003 | 3986 | | |
4004 | 3987 | | |
4005 | 3988 | | |
4006 | | - | |
4007 | | - | |
4008 | | - | |
4009 | | - | |
4010 | 3989 | | |
4011 | 3990 | | |
4012 | | - | |
4013 | | - | |
4014 | 3991 | | |
4015 | 3992 | | |
4016 | 3993 | | |
4017 | 3994 | | |
4018 | 3995 | | |
4019 | | - | |
4020 | | - | |
4021 | | - | |
4022 | | - | |
4023 | 3996 | | |
4024 | 3997 | | |
4025 | 3998 | | |
4026 | 3999 | | |
4027 | | - | |
| 4000 | + | |
4028 | 4001 | | |
4029 | | - | |
4030 | | - | |
4031 | 4002 | | |
4032 | 4003 | | |
4033 | 4004 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| |||
619 | 619 | | |
620 | 620 | | |
621 | 621 | | |
622 | | - | |
623 | | - | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
624 | 625 | | |
625 | 626 | | |
626 | 627 | | |
627 | | - | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
628 | 640 | | |
629 | | - | |
630 | 641 | | |
631 | 642 | | |
632 | 643 | | |
633 | 644 | | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
634 | 650 | | |
635 | | - | |
636 | | - | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
637 | 655 | | |
638 | 656 | | |
639 | 657 | | |
640 | 658 | | |
641 | 659 | | |
642 | | - | |
| 660 | + | |
643 | 661 | | |
644 | 662 | | |
645 | 663 | | |
646 | 664 | | |
647 | 665 | | |
648 | 666 | | |
649 | | - | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
650 | 673 | | |
651 | 674 | | |
652 | 675 | | |
653 | 676 | | |
654 | 677 | | |
655 | | - | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
656 | 685 | | |
657 | | - | |
| 686 | + | |
658 | 687 | | |
659 | 688 | | |
660 | 689 | | |
661 | 690 | | |
662 | 691 | | |
663 | 692 | | |
664 | | - | |
| 693 | + | |
665 | 694 | | |
666 | 695 | | |
667 | 696 | | |
668 | 697 | | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
669 | 703 | | |
670 | 704 | | |
671 | 705 | | |
| |||
789 | 823 | | |
790 | 824 | | |
791 | 825 | | |
792 | | - | |
793 | | - | |
794 | | - | |
795 | | - | |
796 | | - | |
797 | | - | |
| 826 | + | |
798 | 827 | | |
799 | 828 | | |
800 | 829 | | |
801 | 830 | | |
802 | 831 | | |
803 | 832 | | |
804 | 833 | | |
805 | | - | |
806 | | - | |
807 | | - | |
808 | | - | |
809 | 834 | | |
810 | 835 | | |
811 | 836 | | |
812 | | - | |
813 | | - | |
814 | | - | |
815 | | - | |
| 837 | + | |
816 | 838 | | |
817 | 839 | | |
818 | 840 | | |
| |||
0 commit comments