Repository navigation
Commit e677b27
committed
pythongh-122527: Fix a crash on deallocation of
The `PyStructSequence` destructor would crash if it was deallocated after
its type's dictionary was cleared by the GC, because it couldn't compute
the "real size" of the instance. This could occur with relatively
straightforward code in the free-threaded build or with a reference
cycle involving the type in the default build, due to differing orders
in which `tp_clear()` was called.
Account for the non-sequence fields in `tp_basicsize` and use that,
along with `Py_SIZE()`, to compute the "real" size of a
`PyStructSequence` in the dealloc function. This avoids the accesses to
the type's dictionary during dealloc, which were unsafe.PyStructSequence
1 parent fda6bd8 commit e677b27
4 files changed
Lines changed: 41 additions & 7 deletions
File tree
- Lib/test
- Misc/NEWS.d/next/Core_and_Builtins
- Objects
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
5 | 6 | | |
6 | 7 | | |
| 8 | + | |
7 | 9 | | |
8 | 10 | | |
9 | 11 | | |
| |||
342 | 344 | | |
343 | 345 | | |
344 | 346 | | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
345 | 358 | | |
346 | 359 | | |
347 | 360 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1823 | 1823 | | |
1824 | 1824 | | |
1825 | 1825 | | |
1826 | | - | |
| 1826 | + | |
| 1827 | + | |
1827 | 1828 | | |
1828 | 1829 | | |
1829 | 1830 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | | - | |
| 44 | + | |
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
50 | 58 | | |
51 | 59 | | |
52 | 60 | | |
| |||
120 | 128 | | |
121 | 129 | | |
122 | 130 | | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
123 | 134 | | |
124 | 135 | | |
125 | 136 | | |
| |||
565 | 576 | | |
566 | 577 | | |
567 | 578 | | |
568 | | - | |
| 579 | + | |
| 580 | + | |
569 | 581 | | |
570 | 582 | | |
571 | | - | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
572 | 587 | | |
573 | 588 | | |
574 | 589 | | |
| |||
621 | 636 | | |
622 | 637 | | |
623 | 638 | | |
624 | | - | |
| 639 | + | |
625 | 640 | | |
626 | 641 | | |
627 | 642 | | |
| |||
684 | 699 | | |
685 | 700 | | |
686 | 701 | | |
687 | | - | |
| 702 | + | |
688 | 703 | | |
689 | 704 | | |
690 | 705 | | |
| |||
760 | 775 | | |
761 | 776 | | |
762 | 777 | | |
763 | | - | |
| 778 | + | |
| 779 | + | |
764 | 780 | | |
765 | 781 | | |
766 | 782 | | |
| |||
0 commit comments