[Python-checkins] [3.10] GH-94329: Don't raise on excessive stack consumption (GH-94421) (#94448)
pablogsal
webhook-mailer at python.org
Mon Jul 11 08:21:26 EDT 2022
https://github.com/python/cpython/commit/b87d03d355a1b303a1e0550b0da0fdeb99674da5
commit: b87d03d355a1b303a1e0550b0da0fdeb99674da5
branch: 3.10
author: Mark Shannon <mark at hotpy.org>
committer: pablogsal <Pablogsal at gmail.com>
date: 2022-07-11T13:21:17+01:00
summary:
[3.10] GH-94329: Don't raise on excessive stack consumption (GH-94421) (#94448)
files:
A Misc/NEWS.d/next/Core and Builtins/2022-06-29-15-45-04.gh-issue-94329.olUQyk.rst
M Lib/test/test_compile.py
M Python/compile.c
diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py
index 9859d9a46710d..8312613aeaa9f 100644
--- a/Lib/test/test_compile.py
+++ b/Lib/test/test_compile.py
@@ -1035,6 +1035,12 @@ def test_func_and(self):
code += " x and x\n" * self.N
self.check_stack_size(code)
+ def test_stack_3050(self):
+ M = 3050
+ code = "x," * M + "=t"
+ # This raised on 3.10.0 to 3.10.5
+ compile(code, "<foo>", "single")
+
class TestStackSizeStability(unittest.TestCase):
# Check that repeating certain snippets doesn't increase the stack size
diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-06-29-15-45-04.gh-issue-94329.olUQyk.rst b/Misc/NEWS.d/next/Core and Builtins/2022-06-29-15-45-04.gh-issue-94329.olUQyk.rst
new file mode 100644
index 0000000000000..afd31b6e4dc44
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2022-06-29-15-45-04.gh-issue-94329.olUQyk.rst
@@ -0,0 +1,2 @@
+Compile and run code with unpacking of extremely large sequences (1000s of elements).
+Such code failed to compile. It now compiles and runs correctly.
diff --git a/Python/compile.c b/Python/compile.c
index ea2fdfdb60405..40d1761804b71 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -6968,13 +6968,6 @@ makecode(struct compiler *c, struct assembler *a, PyObject *consts)
Py_DECREF(consts);
goto error;
}
- if (maxdepth > MAX_ALLOWED_STACK_USE) {
- PyErr_Format(PyExc_SystemError,
- "excessive stack use: stack is %d deep",
- maxdepth);
- Py_DECREF(consts);
- goto error;
- }
co = PyCode_NewWithPosOnlyArgs(posonlyargcount+posorkeywordargcount,
posonlyargcount, kwonlyargcount, nlocals_int,
maxdepth, flags, a->a_bytecode, consts, names,
More information about the Python-checkins
mailing list