| |
| /* Demonstrate Memcheck correctly handling chain of 64 recursive |
| calls, each of which allocates a 1 M array on the stack. Requires |
| --main-stacksize=67117057 (on amd64-linux) or above, but works fine |
| if you specify that. */ |
| |
| #include <stdio.h> |
| |
| #define N_MBYTES 64 |
| |
| #define N_INTS_PER_MBYTE (1048576 / sizeof(int)) |
| |
| int rec ( int depth ) |
| { |
| int i, zzz; |
| int arr[N_INTS_PER_MBYTE]; |
| if (depth == 0) return 0; |
| for (i = 0; i < N_INTS_PER_MBYTE; i++) |
| arr[i] = i * depth; |
| zzz = rec(depth-1); |
| for (i = 0; i < N_INTS_PER_MBYTE; i++) |
| zzz += arr[i]; |
| return zzz; |
| } |
| |
| |
| int main ( void ) |
| { |
| int sum; |
| fprintf(stderr, "lsframe2: start\n"); |
| sum = rec(N_MBYTES); |
| fprintf(stderr, "lsframe2: done, result is %d\n", sum); |
| return 0; |
| } |