diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2023-08-04 10:25:51 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-04 10:25:51 (GMT) |
commit | 98902d6c0522df022d2f88499faf9774970e2838 (patch) | |
tree | 3c5919fae5314286a774ae9ebe8e682a4b5d50c5 /Python/symtable.c | |
parent | 58af2293c52a1ad3754d254690c0e54f787c545b (diff) | |
download | cpython-98902d6c0522df022d2f88499faf9774970e2838.zip cpython-98902d6c0522df022d2f88499faf9774970e2838.tar.gz cpython-98902d6c0522df022d2f88499faf9774970e2838.tar.bz2 |
[3.12] GH-107263: Increase C stack limit for most functions, except `_PyEval_EvalFrameDefault()` (GH-107535) (#107618)
GH-107263: Increase C stack limit for most functions, except `_PyEval_EvalFrameDefault()` (GH-107535)
* Set C recursion limit to 1500, set cost of eval loop to 2 frames, and compiler mutliply to 2.
(cherry picked from commit fa45958450aa3489607daf9855ca0474a2a20878)
Co-authored-by: Mark Shannon <mark@hotpy.org>
Diffstat (limited to 'Python/symtable.c')
-rw-r--r-- | Python/symtable.c | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/Python/symtable.c b/Python/symtable.c index e2c00d1..115882d 100644 --- a/Python/symtable.c +++ b/Python/symtable.c @@ -282,17 +282,10 @@ symtable_new(void) return NULL; } -/* When compiling the use of C stack is probably going to be a lot - lighter than when executing Python code but still can overflow - and causing a Python crash if not checked (e.g. eval("()"*300000)). - Using the current recursion limit for the compiler seems too - restrictive (it caused at least one test to fail) so a factor is - used to allow deeper recursion when compiling an expression. - - Using a scaling factor means this should automatically adjust when +/* Using a scaling factor means this should automatically adjust when the recursion limit is adjusted for small or large C stack allocations. */ -#define COMPILER_STACK_FRAME_SCALE 3 +#define COMPILER_STACK_FRAME_SCALE 2 struct symtable * _PySymtable_Build(mod_ty mod, PyObject *filename, PyFutureFeatures *future) |