X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ba5e8b528ff29715f5a9008137e117a9fbcc24b0..9fd6cbc6c3b06f4b09e3c3339ffb3cc8a68f9bfa:/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..d779b36c54 100644 --- a/tools/cmake/test_prog/prog_stackgrowth.c +++ b/tools/cmake/test_prog/prog_stackgrowth.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2010, 2014-2015. The SimGrid Team. +/* Copyright (c) 2010-2018. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -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; }