[PD] What exactly is a "stack overflow" ?
Derek Holzer
derek at umatic.nl
Mon Dec 17 20:08:20 CET 2007
Hi David,
Funny, I just posted a good example of stack overflow, the typical counter:
[f]X[+ 1]
where [+ 1] gets sent to the hot rather than the cold inlet of [f].
Because computers are dumb animals, they will try to do exactly what you
tell them to without any regards to whether it's sane/possible or not.
In this case, the classic stack overflow, you've asked the computer to
put itself in an infinite loop ("infinite recursion"), counting and
retriggering itself as fast as the CPU will let it do. When PD detects
this, it disables that part of the patch and gives a "stack overflow" error.
Sending a "bang" message to the [until] object, created without an
argument saying how many times the bang should be done, will give
roughly the same effect--effectively you have said to do something
forever without limit and with no time constraint (although this
particular example does something worse than just throw a "stack
overflow" message, it completely freezes PD!).
For a proper explanation, Wikipedia offers the following:
http://en.wikipedia.org/wiki/Stack_overflow
The gist of it is, you have used up all the available memory in the call
stack, and the program has no more memory to store variables and do
operations.
Avoiding stack overflow is possible by practicing good patching
strategies and paying close attention to order of operations. Use
[trigger] to properly sequence messages. Don't "fan" patch cables, which
can create indeterminate order of operations. Pay attention to "hot" and
"cold" inlets, so that a section of the patch can't run away with itself
(as in the improper counter example above). Use the "Find last error"
command to try to sniff out where the overflow might be happening, then
look for fanned cables, wrong connections or other indeterminate/not
sane orders of operations there.
Hope that helps,
d.
David Schaffer wrote:
> Can anyone explain me what a "stack overflow" error is (at least what
> it means in Pd) and what I can do about it?! Thank you
--
derek holzer ::: http://www.umatic.nl ::: http://blog.myspace.com/macumbista
---Oblique Strategy # 37:
"Convert a melodic element into a rhythmic element"
More information about the Pd-list
mailing list