This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/53521] [4.5/4.6/4.7/4.8 Regression] Memory leak with zero-sized array constructor
- From: "burnus at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 31 May 2012 08:12:09 +0000
- Subject: [Bug fortran/53521] [4.5/4.6/4.7/4.8 Regression] Memory leak with zero-sized array constructor
- Auto-submitted: auto-generated
- References: <bug-53521-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53521
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |wrong-code
Status|NEW |ASSIGNED
Summary|[4.5/4.6/4.7/4.8 |[4.5/4.6/4.7/4.8
|Regression] Zero-byte |Regression] Memory leak
|"memory leak" with |with zero-sized array
|zero-sized array |constructor
|constructor (valgrind |
|warning) |
--- Comment #7 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-05-31 08:12:09 UTC ---
(In reply to comment #6)
> needs 25Gb of memory after a while (notice the endless loop around CALL T2).
I had tried it with a finite loop and valgrind, but the latter then only
showed:
==32236== definitely lost: 0 bytes in 10,000 blocks
However, I could reproduce it, when looking at the memory consumption in "top".
(In reply to comment #5)
> That is clearly a bug in the Fortran FE.
> D.1888 = __builtin_realloc (atmp.0.data, D.1887);
...
> if (D.1887 == 0)
> D.1888 = 0B;
> means that D.1888 isn't freed.
Well spotted! I got distracted by the valgrind result of 0 bytes - and by the
later FREE check, which should be okay.
The problem is in gcc/fortran/trans.c's gfc_call_realloc.