diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2023-04-24 17:23:57 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-24 17:23:57 -0600 |
commit | df3173d28ef25a0f97d2cca8cf4e64e062a08d06 (patch) | |
tree | f2b6f378f81ceee48a9e710154b9d6c4b0f959a2 /Lib/test/test_embed.py | |
parent | 01be52e42eac468b6511b56ee60cd1b99baf3848 (diff) | |
download | cpython-df3173d28ef25a0f97d2cca8cf4e64e062a08d06.tar.gz cpython-df3173d28ef25a0f97d2cca8cf4e64e062a08d06.zip |
gh-101659: Isolate "obmalloc" State to Each Interpreter (gh-101660)
This is strictly about moving the "obmalloc" runtime state from
`_PyRuntimeState` to `PyInterpreterState`. Doing so improves isolation
between interpreters, specifically most of the memory (incl. objects)
allocated for each interpreter's use. This is important for a
per-interpreter GIL, but such isolation is valuable even without it.
FWIW, a per-interpreter obmalloc is the proverbial
canary-in-the-coalmine when it comes to the isolation of objects between
interpreters. Any object that leaks (unintentionally) to another
interpreter is highly likely to cause a crash (on debug builds at
least). That's a useful thing to know, relative to interpreter
isolation.
Diffstat (limited to 'Lib/test/test_embed.py')
-rw-r--r-- | Lib/test/test_embed.py | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py index e56d0db8627..f702ffb9990 100644 --- a/Lib/test/test_embed.py +++ b/Lib/test/test_embed.py @@ -1656,6 +1656,7 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase): api=API_PYTHON, env=env) def test_init_main_interpreter_settings(self): + OBMALLOC = 1<<5 EXTENSIONS = 1<<8 THREADS = 1<<10 DAEMON_THREADS = 1<<11 @@ -1664,7 +1665,7 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase): expected = { # All optional features should be enabled. 'feature_flags': - FORK | EXEC | THREADS | DAEMON_THREADS, + OBMALLOC | FORK | EXEC | THREADS | DAEMON_THREADS, } out, err = self.run_embedded_interpreter( 'test_init_main_interpreter_settings', |