summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_frame.py
diff options
context:
space:
mode:
authorSam Gross <colesbury@gmail.com>2024-02-16 16:22:27 (GMT)
committerGitHub <noreply@github.com>2024-02-16 16:22:27 (GMT)
commitb24c9161a651f549ed48f4b4dba8996fe9cc4e09 (patch)
tree549acacced5ca0b1923e0df94b40ef633c6cdf8f /Lib/test/test_frame.py
parentf92857a93016aa26ba93959d2bdb690ef52e7f07 (diff)
downloadcpython-b24c9161a651f549ed48f4b4dba8996fe9cc4e09.zip
cpython-b24c9161a651f549ed48f4b4dba8996fe9cc4e09.tar.gz
cpython-b24c9161a651f549ed48f4b4dba8996fe9cc4e09.tar.bz2
gh-112529: Make the GC scheduling thread-safe (#114880)
The GC keeps track of the number of allocations (less deallocations) since the last GC. This buffers the count in thread-local state and uses atomic operations to modify the per-interpreter count. The thread-local buffering avoids contention on shared state. A consequence is that the GC scheduling is not as precise, so "test_sneaky_frame_object" is skipped because it requires that the GC be run exactly after allocating a frame object.
Diffstat (limited to 'Lib/test/test_frame.py')
-rw-r--r--Lib/test/test_frame.py3
1 files changed, 2 insertions, 1 deletions
diff --git a/Lib/test/test_frame.py b/Lib/test/test_frame.py
index baed03d..f88206d 100644
--- a/Lib/test/test_frame.py
+++ b/Lib/test/test_frame.py
@@ -13,7 +13,7 @@ except ImportError:
_testcapi = None
from test import support
-from test.support import threading_helper
+from test.support import threading_helper, Py_GIL_DISABLED
from test.support.script_helper import assert_python_ok
@@ -294,6 +294,7 @@ class TestIncompleteFrameAreInvisible(unittest.TestCase):
assert_python_ok("-c", code)
@support.cpython_only
+ @unittest.skipIf(Py_GIL_DISABLED, "test requires precise GC scheduling")
def test_sneaky_frame_object(self):
def trace(frame, event, arg):