From: Trent Mick Date: Wed, 16 Aug 2000 22:29:55 +0000 (+0000) Subject: The sre test suite currently overruns the stack on Win64, Linux64, and Monterey X-Git-Tag: v2.0b1~415 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=239548f37da61f31206f9db912d7897431971b63;p=python The sre test suite currently overruns the stack on Win64, Linux64, and Monterey (64-bit AIX) This is because the RECURSION_LIMIT is too low. This patch lowers to recusion limit to 7500 such that the recusion check fires before a segfault. Fredrik suggested/approved the fix in private email, modulo sre's recusion limit checking no being necessary when PyOS_CheckStack is implemented for Windows. --- diff --git a/Modules/_sre.c b/Modules/_sre.c index b87282c119..29e92ac574 100644 --- a/Modules/_sre.c +++ b/Modules/_sre.c @@ -58,9 +58,18 @@ char copyright[] = " SRE 0.9.8 Copyright (c) 1997-2000 by Secret Labs AB "; /* -------------------------------------------------------------------- */ /* optional features */ -/* prevent run-away recursion (bad patterns on long strings) */ +/* prevent run-away recursion (bad patterns on long strings) + Require a smaller recursion limit for a number of 64-bit platforms + to prevent stack overflow: + Win64 - MS_WIN64, Linux64 - __LP64__, Monterey (64-bit AIX) - _LP64 + XXX Or maybe this should be defined for all SIZEOF_VOIDP>4 platforms? +*/ #if !defined(USE_STACKCHECK) -#define USE_RECURSION_LIMIT 10000 +# if defined(MS_WIN64) || defined(__LP64__) || defined(_LP64) +# define USE_RECURSION_LIMIT 7500 +# else +# define USE_RECURSION_LIMIT 10000 +# endif #endif /* enables fast searching */