On 2008-01-11 11:30:12 -0800, Jerry DeLisle wrote: > With the Fortran test case I am using for PR34722. I did a valgrind > check with the following command: > > valgrind --leak-check=full f951 inquire_12.f90 > > The possible problem in mpfr has been around a while. [...] > I get the following: > > ==14240== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 5 from 1) > ==14240== malloc/free: in use at exit: 310,961 bytes in 1,036 blocks. > ==14240== malloc/free: 2,207 allocs, 1,171 frees, 1,296,169 bytes allocated. > ==14240== For counts of detected errors, rerun with: -v > ==14240== searching for pointers to 1,036 not-freed blocks. > ==14240== checked 2,346,928 bytes. > ==14240== > ==14240== 64 bytes in 2 blocks are possibly lost in loss record 1 of 8 > ==14240== at 0x4A059F6: malloc (vg_replace_malloc.c:149) > ==14240== by 0xB2F778: __gmp_default_allocate (in /mnt/sdb2/obj43/gcc/f951) > ==14240== by 0x4C2B62D: mpfr_init2 (init2.c:53) > ==14240== by 0x4C34424: mpfr_cache (cache.c:57) > ==14240== by 0x4C18E48: mpfr_log (log.c:133) > ==14240== by 0x4C2A4D1: mpfr_log10 (log10.c:111) > ==14240== by 0x40A29F: gfc_arith_init_1 (arith.c:165) > ==14240== by 0x443BC2: gfc_init_1 (misc.c:259) > ==14240== by 0x47684D: gfc_init (f95-lang.c:288) > ==14240== by 0x6D74F4: toplev_main (toplev.c:2128) > ==14240== by 0x3B7EC1E073: (below main) (in /lib64/libc-2.7.so)
I'd say that this is a "bug" in GCC, that doesn't call mpfr_free_cache() before exiting. Now, this isn't really necessary in practice since the memory will be freed anyway. -- Vincent Lefèvre <[EMAIL PROTECTED]> - Web: <http://www.vinc17.org/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/> Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)