summaryrefslogtreecommitdiff
path: root/sys/src/cmd/python/Misc/find_recursionlimit.py
diff options
context:
space:
mode:
authorOri Bernstein <ori@eigenstate.org>2021-06-14 00:00:37 +0000
committerOri Bernstein <ori@eigenstate.org>2021-06-14 00:00:37 +0000
commita73a964e51247ed169d322c725a3a18859f109a3 (patch)
tree3f752d117274d444bda44e85609aeac1acf313f3 /sys/src/cmd/python/Misc/find_recursionlimit.py
parente64efe273fcb921a61bf27d33b230c4e64fcd425 (diff)
python, hg: tow outside the environment.
they've served us well, and can ride off into the sunset.
Diffstat (limited to 'sys/src/cmd/python/Misc/find_recursionlimit.py')
-rw-r--r--sys/src/cmd/python/Misc/find_recursionlimit.py87
1 files changed, 0 insertions, 87 deletions
diff --git a/sys/src/cmd/python/Misc/find_recursionlimit.py b/sys/src/cmd/python/Misc/find_recursionlimit.py
deleted file mode 100644
index e6454c9c3..000000000
--- a/sys/src/cmd/python/Misc/find_recursionlimit.py
+++ /dev/null
@@ -1,87 +0,0 @@
-#! /usr/bin/env python
-"""Find the maximum recursion limit that prevents core dumps
-
-This script finds the maximum safe recursion limit on a particular
-platform. If you need to change the recursion limit on your system,
-this script will tell you a safe upper bound. To use the new limit,
-call sys.setrecursionlimit.
-
-This module implements several ways to create infinite recursion in
-Python. Different implementations end up pushing different numbers of
-C stack frames, depending on how many calls through Python's abstract
-C API occur.
-
-After each round of tests, it prints a message
-Limit of NNNN is fine.
-
-It ends when Python causes a segmentation fault because the limit is
-too high. On platforms like Mac and Windows, it should exit with a
-MemoryError.
-
-NB: A program that does not use __methods__ can set a higher limit.
-"""
-
-import sys
-
-class RecursiveBlowup1:
- def __init__(self):
- self.__init__()
-
-def test_init():
- return RecursiveBlowup1()
-
-class RecursiveBlowup2:
- def __repr__(self):
- return repr(self)
-
-def test_repr():
- return repr(RecursiveBlowup2())
-
-class RecursiveBlowup4:
- def __add__(self, x):
- return x + self
-
-def test_add():
- return RecursiveBlowup4() + RecursiveBlowup4()
-
-class RecursiveBlowup5:
- def __getattr__(self, attr):
- return getattr(self, attr)
-
-def test_getattr():
- return RecursiveBlowup5().attr
-
-class RecursiveBlowup6:
- def __getitem__(self, item):
- return self[item - 2] + self[item - 1]
-
-def test_getitem():
- return RecursiveBlowup6()[5]
-
-def test_recurse():
- return test_recurse()
-
-def check_limit(n, test_func_name):
- sys.setrecursionlimit(n)
- if test_func_name.startswith("test_"):
- print test_func_name[5:]
- else:
- print test_func_name
- test_func = globals()[test_func_name]
- try:
- test_func()
- except RuntimeError:
- pass
- else:
- print "Yikes!"
-
-limit = 1000
-while 1:
- check_limit(limit, "test_recurse")
- check_limit(limit, "test_add")
- check_limit(limit, "test_repr")
- check_limit(limit, "test_init")
- check_limit(limit, "test_getattr")
- check_limit(limit, "test_getitem")
- print "Limit of %d is fine" % limit
- limit = limit + 100