diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index 1590ab1e842..ffb49ab7386 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -83,6 +83,22 @@ if sys.maxint > 0x7fffffff: warnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, "") +# MacOSX (a.k.a. Darwin) has a default stack size that is too small +# for deeply recursive regular expressions. We see this as crashes in +# the Python test suite when running test_re.py and test_sre.py. The +# fix is to set the stack limit to 2048. +# This approach may also be useful for other Unixy platforms that +# suffer from small default stack limits. +if sys.platform == 'darwin': + try: + import resource + except ImportError: + pass + else: + soft, hard = resource.getrlimit(resource.RLIMIT_STACK) + newsoft = min(hard, max(soft, 1024*2048)) + resource.setrlimit(resource.RLIMIT_STACK, (newsoft, hard)) + from test import test_support RESOURCE_NAMES = ('curses', 'largefile', 'network', 'bsddb')