[Python-Dev] stack check on Unix: any suggestions?

M.-A. Lemburg mal@lemburg.com
Tue, 29 Aug 2000 22:39:18 +0200


Fredrik Lundh wrote:
> 
> ...
> 
> or maybe the optimizer removed your buffer variable?
> 
> try printing the buffer address, to see how much memory
> you're really consuming here.
> 
>      printf("%p %d\n", buffer, depth);

I got some more insight using:

int checkstack(int depth)
{
    if (depth <= 0)
	return 0;
    checkstack(depth - 1);
}

int recurse(int depth)
{
    char stack[2048];
    char *heap;
    
    memset(stack, depth % 256, sizeof(stack));
    heap = (char*) malloc(2048);

    /* Call recursively */
    printf("stack %p heap %p depth %d\n", stack, heap, depth);
    checkstack(depth);
    recurse(depth + 1);
    return 0;
}

main()
{
    recurse(0);
}

This print lines like these:
stack 0xbed4b118 heap 0x92a1cb8 depth 9356

... or in other words over 3GB of space between the stack and
the heap. No wonder I'm not seeing any core dumps.

-- 
Marc-Andre Lemburg
______________________________________________________________________
Business:                                      http://www.lemburg.com/
Python Pages:                           http://www.lemburg.com/python/