X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/983ca84f3ac2d74ba56145026d89bd11f3f096e5..61427a88a76a2c2ef25d0d5b8132995c6f550e5c:/tools/cmake/test_prog/prog_stackgrowth.c diff --git a/tools/cmake/test_prog/prog_stackgrowth.c b/tools/cmake/test_prog/prog_stackgrowth.c index f005341f04..dc7c0df0d8 100644 --- a/tools/cmake/test_prog/prog_stackgrowth.c +++ b/tools/cmake/test_prog/prog_stackgrowth.c @@ -10,12 +10,20 @@ static int iterate = 10; static int growsdown(int *x) { - int y; - y = (x > &y); + int y = (x > &y); + if (--iterate > 0) y = growsdown(&y); - if (y != (x > &y)) + + /* The stack sometimes changes at the 0th level. + * Original version did fail in this case, but I changed this around SimGrid 3.13 because of https://bugs.debian.org/814272 + * Every arch failed on that day :( + */ + if (iterate != 0 && y != (x > &y)) { + fprintf(stderr, "The stack changed its direction! (Iteration: %d. It was growing %s; &y=%p; &prevY=%p)\n", + (10 - iterate), y ? "down" : "up", &y, x); exit(1); + } return y; } @@ -23,6 +31,6 @@ int main(int argc, char *argv[]) { int x; printf("%s", growsdown(&x) ? "down" : "up"); - exit(0); - return 1; + + return 0; }