mirror of https://github.com/YosysHQ/yosys.git
Merge pull request #693 from YosysHQ/rlimit
improve rlimit handling in smtio.py
This commit is contained in:
commit
825b4c1aa9
|
@ -31,16 +31,19 @@ from threading import Thread
|
||||||
# does not run out of stack frames when parsing large expressions
|
# does not run out of stack frames when parsing large expressions
|
||||||
if os.name == "posix":
|
if os.name == "posix":
|
||||||
smtio_reclimit = 64 * 1024
|
smtio_reclimit = 64 * 1024
|
||||||
smtio_stacksize = 128 * 1024 * 1024
|
|
||||||
smtio_stacklimit = resource.RLIM_INFINITY
|
|
||||||
if os.uname().sysname == "Darwin":
|
|
||||||
# MacOS has rather conservative stack limits
|
|
||||||
smtio_stacksize = 16 * 1024 * 1024
|
|
||||||
smtio_stacklimit = resource.getrlimit(resource.RLIMIT_STACK)[1]
|
|
||||||
if sys.getrecursionlimit() < smtio_reclimit:
|
if sys.getrecursionlimit() < smtio_reclimit:
|
||||||
sys.setrecursionlimit(smtio_reclimit)
|
sys.setrecursionlimit(smtio_reclimit)
|
||||||
if resource.getrlimit(resource.RLIMIT_STACK)[0] < smtio_stacksize:
|
|
||||||
resource.setrlimit(resource.RLIMIT_STACK, (smtio_stacksize, smtio_stacklimit))
|
current_rlimit_stack = resource.getrlimit(resource.RLIMIT_STACK)
|
||||||
|
if current_rlimit_stack[0] != resource.RLIM_INFINITY:
|
||||||
|
smtio_stacksize = 128 * 1024 * 1024
|
||||||
|
if os.uname().sysname == "Darwin":
|
||||||
|
# MacOS has rather conservative stack limits
|
||||||
|
smtio_stacksize = 16 * 1024 * 1024
|
||||||
|
if current_rlimit_stack[1] != resource.RLIM_INFINITY:
|
||||||
|
smtio_stacksize = min(smtio_stacksize, current_rlimit_stack[1])
|
||||||
|
if current_rlimit_stack[0] < smtio_stacksize:
|
||||||
|
resource.setrlimit(resource.RLIMIT_STACK, (smtio_stacksize, current_rlimit_stack[1]))
|
||||||
|
|
||||||
|
|
||||||
# currently running solvers (so we can kill them)
|
# currently running solvers (so we can kill them)
|
||||||
|
|
Loading…
Reference in New Issue