------- Comment #8 from jvdelisle at gcc dot gnu dot org 2006-04-28 22:25 ------- Here is valgrind report using allocate_zerosize.f90 as a testcase. This is definitely a memory leak problem:
--4718-- supp: 13 dl_relocate_object ==4718== malloc/free: in use at exit: 21254 bytes in 131 blocks. ==4718== malloc/free: 265 allocs, 134 frees, 31979 bytes allocated. ==4718== ==4718== searching for pointers to 131 not-freed blocks. ==4718== checked 65008 bytes. ==4718== ==4718== 4 bytes in 1 blocks are definitely lost in loss record 1 of 8 ==4718== at 0x1B909B71: calloc (vg_replace_malloc.c:175) ==4718== by 0x805EE76: xcalloc (xmalloc.c:162) ==4718== by 0x4AFD7E: __libc_start_main (in /lib/libc-2.3.6.so) ==4718== by 0x80495D0: (within /mnt/sdb2/usr/bin/gfortran) ==4718== ==4718== ==4718== 30 bytes in 1 blocks are definitely lost in loss record 2 of 8 ==4718== at 0x1B909222: malloc (vg_replace_malloc.c:130) ==4718== by 0x805D708: make_relative_prefix (make-relative-prefix.c:361) ==4718== by 0x804D36C: process_command (gcc.c:3370) ==4718== by 0x805345B: main (gcc.c:6182) ==4718== ==4718== ==4718== 5305 (5265 direct, 40 indirect) bytes in 62 blocks are definitely lost in loss record 7 of 8 ==4718== at 0x1B909222: malloc (vg_replace_malloc.c:130) ==4718== by 0x805EEB5: xmalloc (xmalloc.c:147) ==4718== ==4718== LEAK SUMMARY: ==4718== definitely lost: 5299 bytes in 64 blocks. ==4718== indirectly lost: 40 bytes in 3 blocks. ==4718== possibly lost: 0 bytes in 0 blocks. ==4718== still reachable: 15915 bytes in 64 blocks. ==4718== suppressed: 0 bytes in 0 blocks. ==4718== Reachable blocks (those to which a pointer was found) are not shown. ==4718== To see them, rerun with: --show-reachable=yes --4718-- TT/TC: 0 tc sectors discarded. --4718-- 5019 tt_fast misses. --4718-- translate: new 4985 (80515 -> 1094312; ratio 135:10) --4718-- discard 0 (0 -> 0; ratio 0:10). --4718-- chainings: 3496 chainings, 0 unchainings. --4718-- dispatch: 209150 jumps (bb entries); of them 19480 (9%) unchained. --4718-- 5/5697 major/minor sched events. --4718-- reg-alloc: 1002 t-req-spill, 195192+6670 orig+spill uis, --4718-- 26176 total-reg-rank --4718-- sanity: 6 cheap, 1 expensive checks. --4718-- ccalls: 17108 C calls, 56% saves+restores avoided (56636 bytes) --4718-- 23002 args, avg 0.87 setup instrs each (5660 bytes) --4718-- 0% clear the stack (51072 bytes) --4718-- 7446 retvals, 32% of reg-reg movs avoided (4656 bytes) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27351