cpython/Objects
Neil Schemenauer 5c16f699d2
[3.13] GH-133136: Revise QSBR to reduce excess memory held (gh-135473) (gh-136480)
The free threading build uses QSBR to delay the freeing of dictionary
keys and list arrays when the objects are accessed by multiple threads
in order to allow concurrent reads to proceed with holding the object
lock. The requests are processed in batches to reduce execution
overhead, but for large memory blocks this can lead to excess memory
usage.

Take into account the size of the memory block when deciding when to
process QSBR requests.

Also track the amount of memory being held by QSBR for mimalloc pages.
Advance the write sequence if this memory exceeds a limit.  Advancing
the sequence will allow it to be freed more quickly.

Process the held QSBR items from the "eval breaker", rather than from
`_PyMem_FreeDelayed()`.  This gives a higher chance that the global read
sequence has advanced enough so that items can be freed.

(cherry picked from commit 113de8545f)

Co-authored-by: Neil Schemenauer <nas-github@arctrix.com>
Co-authored-by: Sam Gross <colesbury@gmail.com>
2025-07-30 11:06:44 -07:00
..
clinic [3.13] gh-128714: Fix function object races in __annotate__, __annotations__ and __type_params__ in free-threading build (GH-129016) (#129729) 2025-02-23 21:49:55 -05:00
mimalloc [3.13] Fix typos (#123775) (#123866) 2024-10-07 23:44:31 +02:00
stringlib [3.13] gh-127971: fix off-by-one read beyond the end of a string during search (#132574) (#136648) 2025-07-14 11:50:22 +02:00
abstract.c
boolobject.c [3.13] gh-122982: Extend the deprecation period for bool inversion by two years (GH-123306) (#123316) 2024-08-25 19:48:34 +00:00
bytearrayobject.c [3.13] gh-91153: prevent a crash in bytearray.__setitem__(ind, ...) when ind.__index__ has side-effects (GH-132379) (#136582) 2025-07-12 16:34:45 +02:00
bytes_methods.c
bytesobject.c [3.13] gh-133767: Fix use-after-free in the unicode-escape decoder with an error handler (GH-129648) (GH-133944) 2025-05-20 14:46:57 +02:00
call.c
capsule.c [3.13] gh-124538: Fix crash when using gc.get_referents on an untracked capsule object (GH-124559) (#124588) 2024-09-26 13:51:58 -07:00
cellobject.c
classobject.c [3.13] gh-135607: remove null checking of weakref list in dealloc of extension modules and objects (#135614) (#136126) 2025-07-01 11:26:52 +02:00
codeobject.c [3.13] gh-135607: remove null checking of weakref list in dealloc of extension modules and objects (#135614) (#136126) 2025-07-01 11:26:52 +02:00
complexobject.c [3.13] gh-113841: fix possible undefined division by 0 in _Py_c_pow() (GH-127211) (#127216) 2024-12-02 15:42:02 +01:00
descrobject.c [3.13] gh-132747: Fix NULL dereference when calling a method's __get__ manually (GH-132772) (#132786) 2025-04-21 21:38:51 +00:00
dictnotes.txt
dictobject.c [3.13] GH-133136: Revise QSBR to reduce excess memory held (gh-135473) (gh-136480) 2025-07-30 11:06:44 -07:00
enumobject.c
exception_handling_notes.txt
exceptions.c [3.13] gh-129668: Fix thread-safety of MemoryError freelist in free threaded build (gh-129704) (gh-129742) 2025-02-06 13:27:30 -05:00
fileobject.c
floatobject.c [3.13] gh-121905: Consistently use "floating-point" instead of "floating point" (GH-121907) (GH-122012) 2024-07-19 09:13:08 +00:00
frame_layout.md
frameobject.c [3.13] gh-128396: Fix a crash when inline comprehension has the same … (#130311) 2025-02-19 17:40:03 +00:00
funcobject.c [3.13] gh-135607: remove null checking of weakref list in dealloc of extension modules and objects (#135614) (#136126) 2025-07-01 11:26:52 +02:00
genericaliasobject.c [3.13] gh-135607: remove null checking of weakref list in dealloc of extension modules and objects (#135614) (#136126) 2025-07-01 11:26:52 +02:00
genobject.c [3.13] gh-135607: remove null checking of weakref list in dealloc of extension modules and objects (#135614) (#136126) 2025-07-01 11:26:52 +02:00
iterobject.c [3.13] gh-128078: Clear exception in anext before calling _PyGen_SetStopIterationValue (GH-128780) (#128785) 2025-01-13 13:20:49 +00:00
listobject.c [3.13] GH-133136: Revise QSBR to reduce excess memory held (gh-135473) (gh-136480) 2025-07-30 11:06:44 -07:00
listsort.txt
lnotab_notes.txt
locations.md
longobject.c [3.13] gh-133489: Remove size restrictions on getrandbits() and randbytes() (GH-133658) (GH-134965) 2025-06-02 23:16:30 +03:00
memoryobject.c [3.13] gh-126341: add release check to __iter__ method of memoryview (GH-126759) (#126778) 2024-11-13 19:05:59 +00:00
methodobject.c [3.13] gh-135607: remove null checking of weakref list in dealloc of extension modules and objects (#135614) (#136126) 2025-07-01 11:26:52 +02:00
moduleobject.c [3.13] gh-135607: remove null checking of weakref list in dealloc of extension modules and objects (#135614) (#136126) 2025-07-01 11:26:52 +02:00
namespaceobject.c [3.13] gh-135878: Fix crash in types.SimpleNamespace.__repr__ (GH-135889) (#135895) 2025-06-24 16:59:29 +00:00
object.c [3.13] gh-117657: Enable test_opcache under TSAN (GH-129831) (GH-130597) 2025-02-26 13:59:59 -05:00
object_layout.md
object_layout_312.gv
object_layout_312.png
object_layout_313.gv
object_layout_313.png
object_layout_full_312.gv
object_layout_full_312.png
object_layout_full_313.gv
object_layout_full_313.png
obmalloc.c [3.13] GH-133136: Revise QSBR to reduce excess memory held (gh-135473) (gh-136480) 2025-07-30 11:06:44 -07:00
odictobject.c [3.13] gh-135607: remove null checking of weakref list in dealloc of extension modules and objects (#135614) (#136126) 2025-07-01 11:26:52 +02:00
picklebufobject.c [3.13] gh-135607: remove null checking of weakref list in dealloc of extension modules and objects (#135614) (#136126) 2025-07-01 11:26:52 +02:00
rangeobject.c
README
setobject.c [3.13] gh-135607: remove null checking of weakref list in dealloc of extension modules and objects (#135614) (#136126) 2025-07-01 11:26:52 +02:00
sliceobject.c gh-117764: Add docstrings and signatures for the types of None, Ellipsis and NotImplemented (GH-117813) 2024-04-12 15:45:23 +03:00
structseq.c [3.13] gh-123091: Use more _Py_IsImmortalLoose() (GH-123602) (GH-123622) 2024-09-03 12:36:42 +02:00
tupleobject.c [3.13] gh-126076: Account for relocated objects in tracemalloc (GH-126077) (#127823) 2024-12-11 14:15:37 +01:00
typeobject.c [3.13] gh-78465: Fix error message for cls.__new__(cls, ...) where cls is not instantiable (GH-135981) (GH-136031) 2025-06-27 12:07:22 +00:00
typeslots.inc
typeslots.py
typevarobject.c [3.13] gh-124498: Fix TypeAliasType not to be generic, when type_params=() (GH-124499) (#124603) 2024-09-29 18:01:06 -07:00
unicodectype.c [3.13] gh-82045: Correct and deduplicate "isprintable" docs; add test. (GH-130127) 2025-02-17 15:02:39 +01:00
unicodeobject.c [3.13] gh-133767: Fix use-after-free in the unicode-escape decoder with an error handler (GH-129648) (GH-133944) 2025-05-20 14:46:57 +02:00
unicodetype_db.h
unionobject.c [3.13] gh-132713: Fix typing.Union[index] race condition (GH-132802) (#132839) 2025-04-23 14:12:03 +00:00
weakrefobject.c [3.13] gh-121652: Handle allocate_weakref returning NULL (GH-121653) (#121721) 2024-07-13 16:31:50 +00:00

Source files for various builtin objects