1 /* Demonstrate Memcheck correctly handling chain of 64 recursive
2    calls, each of which allocates a 1 M array on the stack.  Requires
3    --main-stacksize=67117057 (on amd64-linux) or above, but works fine
4    if you specify that. */
5 
6 #include <stdio.h>
7 
8 #define N_MBYTES 64
9 #define N_INTS_PER_MBYTE (1048576 / sizeof(int))
10 
11 int rec(int depth)
12 {
13    int i, zzz;
14    int arr[N_INTS_PER_MBYTE];
15    if (depth == 0) return 0;
16    for (i = 0; i < N_INTS_PER_MBYTE; i++)
17       arr[i] = i * depth;
18    zzz = rec(depth-1);
19    for (i = 0; i < N_INTS_PER_MBYTE; i++)
20        zzz += arr[i];
21    return zzz;
22 }
23 
24 int main(void)
25 {
26    int sum;
27    printf("lsframe2: start\n");
28    sum = rec(N_MBYTES);
29    printf("lsframe2: done, result is %d\n", sum);
30    return 0;
31 }
32