Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [RFA] Use gdb::unique_xmalloc_ptr<char> in command_line_input to fix a leak
@ 2018-12-31  8:19 Philippe Waroquiers
  2018-12-31 16:01 ` Tom Tromey
  0 siblings, 1 reply; 2+ messages in thread
From: Philippe Waroquiers @ 2018-12-31  8:19 UTC (permalink / raw)
  To: gdb-patches; +Cc: Philippe Waroquiers

Following the change of logic where the input_handler gets a
gdb::unique_xmalloc_ptr<char>, a call to readline directly
followed by a call to handle_line_of_input is missing a free,
and causes the below leak.

Use gdb::unique_xmalloc_ptr<char> to solve the leak.

==16291== VALGRIND_GDB_ERROR_BEGIN
==16291== 64 bytes in 1 blocks are definitely lost in loss record 1,815 of 4,111
==16291==    at 0x4C2E2B3: realloc (vg_replace_malloc.c:836)
==16291==    by 0x41EB1C: xrealloc (common-utils.c:62)
==16291==    by 0x41DBD3: buffer_grow(buffer*, char const*, unsigned long) [clone .part.1] (buffer.c:40)
==16291==    by 0x66E8FF: buffer_grow_char (buffer.h:40)
==16291==    by 0x66E8FF: gdb_readline_no_editing (top.c:798)
==16291==    by 0x66E8FF: command_line_input(char const*, char const*) (top.c:1249)
==16291==    by 0x66EBD8: read_command_file(_IO_FILE*) (top.c:421)
==16291==    by 0x412C0C: script_from_file(_IO_FILE*, char const*) (cli-script.c:1547)
==16291==    by 0x40BE90: source_script_from_stream (cli-cmds.c:569)
==16291==    by 0x40BE90: source_script_with_search(char const*, int, int) (cli-cmds.c:606)
==16291==    by 0x54D567: catch_command_errors(void (*)(char const*, int), char const*, int) (main.c:379)
==16291==    by 0x54EA84: captured_main_1 (main.c:994)
==16291==    by 0x54EA84: captured_main (main.c:1167)
==16291==    by 0x54EA84: gdb_main(captured_main_args*) (main.c:1193)
==16291==    by 0x29DA27: main (gdb.c:32)
==16291==
==16291== VALGRIND_GDB_ERROR_END

gdb/ChangeLog
2018-12-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* top.c (command_line_input): Use unique_xmalloc_ptr to
	manage memory allocated by readline.
---
 gdb/top.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/gdb/top.c b/gdb/top.c
index 8b3fc5ee9a..17e78841ae 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -1212,7 +1212,7 @@ command_line_input (const char *prompt_arg, const char *annotation_suffix)
 
   while (1)
     {
-      char *rl;
+      gdb::unique_xmalloc_ptr<char> rl;
 
       /* Make sure that all output has been output.  Some machines may
          let you get away with leaving out some of the gdb_flush, but
@@ -1236,20 +1236,20 @@ command_line_input (const char *prompt_arg, const char *annotation_suffix)
 	  && from_tty
 	  && input_interactive_p (current_ui))
 	{
-	  rl = (*deprecated_readline_hook) (prompt);
+	  rl.reset ((*deprecated_readline_hook) (prompt));
 	}
       else if (command_editing_p
 	       && from_tty
 	       && input_interactive_p (current_ui))
 	{
-	  rl = gdb_readline_wrapper (prompt);
+	  rl.reset (gdb_readline_wrapper (prompt));
 	}
       else
 	{
-	  rl = gdb_readline_no_editing (prompt);
+	  rl.reset (gdb_readline_no_editing (prompt));
 	}
 
-      cmd = handle_line_of_input (&cmd_line_buffer, rl,
+      cmd = handle_line_of_input (&cmd_line_buffer, rl.get (),
 				  0, annotation_suffix);
       if (cmd == (char *) EOF)
 	{
-- 
2.19.2


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [RFA] Use gdb::unique_xmalloc_ptr<char> in command_line_input to fix a leak
  2018-12-31  8:19 [RFA] Use gdb::unique_xmalloc_ptr<char> in command_line_input to fix a leak Philippe Waroquiers
@ 2018-12-31 16:01 ` Tom Tromey
  0 siblings, 0 replies; 2+ messages in thread
From: Tom Tromey @ 2018-12-31 16:01 UTC (permalink / raw)
  To: Philippe Waroquiers; +Cc: gdb-patches

>>>>> "Philippe" == Philippe Waroquiers <philippe.waroquiers@skynet.be> writes:

Philippe> gdb/ChangeLog
Philippe> 2018-12-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

Philippe> 	* top.c (command_line_input): Use unique_xmalloc_ptr to
Philippe> 	manage memory allocated by readline.

This is ok.  Thank you for doing this.

Tom


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-12-31 16:01 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-31  8:19 [RFA] Use gdb::unique_xmalloc_ptr<char> in command_line_input to fix a leak Philippe Waroquiers
2018-12-31 16:01 ` Tom Tromey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox