[vox-tech] another glibc bug?

Peter Jay Salzman vox-tech@lists.lugod.org
Tue, 6 May 2003 09:59:54 -0700


before i post this to glibc-bug, i'd like to post this just in case
somebody has more information about this:



#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <mcheck.h>
// On my system, size_t is an unsigned int.


int main(void)
{
   char *p = (char *) malloc(sizeof(char));

   if (p == NULL)
      abort();

   printf("I requested %u bytes.\n", sizeof(char));
   printf("p was allocated %u bytes.\n", malloc_usable_size(p));

   return 0;
}



the problem is that linking with libmcheck.a seems to completely confuse
calls to malloc_usable_size():

   $ gcc -W -Wall try.c 
   $ ./a.out 
   I requested 1 bytes.
   p was allocated 12 bytes.

   $ gcc -W -Wall try.c -lmcheck
   $ ./a.out 
   I requested 1 bytes.
   p was allocated 4141754496 bytes.

of course, i don't have this amount of memory on my system.

pete

ps- the patch for the last bug in glibc that i found, malloc_stats()
segfaulting before memory was allocated, was just accepted and will be
in the next release.

-- 
GPG Instructions: http://www.dirac.org/linux/gpg
GPG Fingerprint: B9F1 6CF3 47C4 7CD8 D33E 70A9 A3B9 1945 67EA 951D