[Python-Dev] stack check on Unix: any suggestions? (original) (raw)

Martin v. Loewis martin@loewis.home.cs.tu-berlin.de
Wed, 30 Aug 2000 20:32:30 +0200


So the check would look something like this:

if (tstate->recursiondepth >= 50 && tstate->recursiondepth%10 == 0 && PyOSCheckStack()) { PyErrSetString(PyExcMemoryError, "Stack overflow"); return NULL; }

That sounds like a good solution to me. A recursion depth of 50 should be guaranteed on most systems supported by Python.

I'm not exactly sure how large the safety margin is with Martin's patch, but this seems a good idea.

I chose 3% of the rlimit, which must accomodate the space above the known start of stack plus a single page. That number was chosen arbitarily; on my Linux system, the stack limit is 8MB, so 3% give 200k. Given the maximum limitation of environment pages and argv pages, I felt that this is safe enough. OTOH, if you've used more than 7MB of stack, it is likely that the last 200k won't help, either.

Regards, Martin