What broke the test is the fact that the functions from the test were inlined and thus the local variables ended up in a different order in the stack, not the original assumption. I have made the code non-deterministic so most compilers will not inline the calls and hopefully the growth test works.
Finally, though the test is fragile, it is not critical. Stack growth direction is only used in two places
1* In ECL's code for detecting stack overflows. We might do without it, but graceful handling of stack overflows based on alternative stacks proved to be useless due to the signal-async problem.
2* In the Boehm-Weiser garbage collector to detect the extent of the stack on different threads. As I said, this is a common assumption across C implementations of garbage collectors and so far never broken.
So all in all, the broken test only affected "1" and now it seems to work.
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain) http://juanjose.garciaripoll.googlepages.com