]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-40521: Disable list free list in subinterpreters (GH-19959)
authorVictor Stinner <vstinner@python.org>
Wed, 6 May 2020 17:05:27 +0000 (19:05 +0200)
committerGitHub <noreply@github.com>
Wed, 6 May 2020 17:05:27 +0000 (19:05 +0200)
When Python is built with experimental isolated interpreters, disable
the list free list.

Temporary workaround until this cache is made per-interpreter.

Objects/listobject.c

index 904bea317c9da8a44ffef5390b5f0cc3196bb0b5..37fadca129ac0236d8d585eae98fe34e8c94e620 100644 (file)
@@ -98,8 +98,15 @@ list_preallocate_exact(PyListObject *self, Py_ssize_t size)
 
 /* Empty list reuse scheme to save calls to malloc and free */
 #ifndef PyList_MAXFREELIST
-#define PyList_MAXFREELIST 80
+#  define PyList_MAXFREELIST 80
 #endif
+
+/* bpo-40521: list free lists are shared by all interpreters. */
+#ifdef EXPERIMENTAL_ISOLATED_SUBINTERPRETERS
+#  undef PyList_MAXFREELIST
+#  define PyList_MAXFREELIST 0
+#endif
+
 static PyListObject *free_list[PyList_MAXFREELIST];
 static int numfree = 0;