diff mbox

Fix memory leak in LTO

Message ID ceeca12c-f9d6-7ed5-dd3d-b228b4380af6@suse.cz
State New
Headers show

Commit Message

Martin Liška Feb. 14, 2017, 11:28 a.m. UTC
Hi.

The patch fixes:

==137424== 24 bytes in 1 blocks are definitely lost in loss record 23 of 748

==137424==    at 0x4C29110: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)

==137424==    by 0x10C39D7: xmalloc (xmalloc.c:147)

==137424==    by 0x10C3AE9: xstrdup (xstrdup.c:34)

==137424==    by 0x61273F: lto_obj_file_open(char const*, bool) (lto-object.c:93)

==137424==    by 0x60AE62: do_stream_out(char*, lto_symtab_encoder_d*) (lto.c:2284)

==137424==    by 0x60FC72: stream_out (lto.c:2333)

==137424==    by 0x60FC72: lto_wpa_write_files (lto.c:2470)

==137424==    by 0x60FC72: do_whole_program_analysis (lto.c:3156)

==137424==    by 0x60FC72: lto_main() (lto.c:3316)

==137424==    by 0x9B830E: compile_file() (toplev.c:467)

==137424==    by 0x5E2D98: do_compile (toplev.c:1984)

==137424==    by 0x5E2D98: toplev::main(int, char**) (toplev.c:2118)

==137424==    by 0x5E4B76: main (main.c:39)



Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.

Ready to be installed?
Martin

Comments

Richard Biener Feb. 14, 2017, 1:33 p.m. UTC | #1
On Tue, Feb 14, 2017 at 12:28 PM, Martin Liška <mliska@suse.cz> wrote:
> Hi.
>
> The patch fixes:
>
> ==137424== 24 bytes in 1 blocks are definitely lost in loss record 23 of 748
>
> ==137424==    at 0x4C29110: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
>
> ==137424==    by 0x10C39D7: xmalloc (xmalloc.c:147)
>
> ==137424==    by 0x10C3AE9: xstrdup (xstrdup.c:34)
>
> ==137424==    by 0x61273F: lto_obj_file_open(char const*, bool) (lto-object.c:93)
>
> ==137424==    by 0x60AE62: do_stream_out(char*, lto_symtab_encoder_d*) (lto.c:2284)
>
> ==137424==    by 0x60FC72: stream_out (lto.c:2333)
>
> ==137424==    by 0x60FC72: lto_wpa_write_files (lto.c:2470)
>
> ==137424==    by 0x60FC72: do_whole_program_analysis (lto.c:3156)
>
> ==137424==    by 0x60FC72: lto_main() (lto.c:3316)
>
> ==137424==    by 0x9B830E: compile_file() (toplev.c:467)
>
> ==137424==    by 0x5E2D98: do_compile (toplev.c:1984)
>
> ==137424==    by 0x5E2D98: toplev::main(int, char**) (toplev.c:2118)
>
> ==137424==    by 0x5E4B76: main (main.c:39)
>
>
>
> Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.
>
> Ready to be installed?

Ok.

Richard.

> Martin
diff mbox

Patch

From 66b97767a498d438eb5740141a299ac8347d4ebc Mon Sep 17 00:00:00 2001
From: marxin <mliska@suse.cz>
Date: Tue, 14 Feb 2017 10:35:09 +0100
Subject: [PATCH] Fix memory leak in LTO

gcc/lto/ChangeLog:

2017-02-14  Martin Liska  <mliska@suse.cz>

	* lto.c (do_stream_out): Free LTO file filename string.

---
 gcc/lto/lto.c       | 2 ++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c
index d77d85defb6..99d58cff4d4 100644
--- a/gcc/lto/lto.c
+++ b/gcc/lto/lto.c
@@ -2288,6 +2288,8 @@  do_stream_out (char *temp_filename, lto_symtab_encoder_t encoder)
 
   ipa_write_optimization_summaries (encoder);
 
+  free (CONST_CAST (char *, file->filename));
+
   lto_set_current_out_file (NULL);
   lto_obj_file_close (file);
   free (file);
-- 
2.11.0