Is it at all possible to determine in a cross-platform way:

1. The current stack position (e.g. SP, except on all architectures.)
2. The maximum stack size.

I realize this is a naive question, but given the above - worst-case, an option (like memory_limit) could be added which tracks recursion depth or stack usage and triggers an error within an acceptable limit.

Example: if you know each recursive PHP function call uses approximately X bytes of stack with its local variable table etc., and you know you have 2 megabytes of stack in your thread/process, you know you can only use a recursion depth of 2097152 / X, and you also know you won't have all of that.

Thus you could prevent segfaults even on shared servers. Still, the solution is to have correct code. The above would either have false negatives and/or introduce a performance loss (check or at least inc per user-space function call) when compiled on.

-[Unknown]

-------- Original Message --------

I assume this is b/c its recursively diving into Class function/method
calls and we are filling memory.. Is this detectable?  Should I file a
bug report or is this known?  Ideally it would be nice to see a fatal
error thrown, if this is indeed detectable.
So far nobody had proposed a solution for endless loop problem that
would satisfy these conditions:
1. No false positives (i.e. good code always works)
2. No slowdown for execution
3. Works with any stack size
Thus, this problem remains unsloved.


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to