btrace, linux: fix memory leak when reading branch trace
authorMarkus Metzger <markus.t.metzger@intel.com>
Mon, 3 Jun 2013 12:32:15 +0000 (14:32 +0200)
committerMarkus Metzger <markus.t.metzger@intel.com>
Thu, 16 Jan 2014 11:45:10 +0000 (12:45 +0100)
When it takes more than one iteration to read the BTS trace, the trace from the
previous iteration is leaked.  Fix it.

2014-01-16  Markus Metzger  <markus.t.metzger@intel.com>

* common/linux-btrace.c (linux_read_btrace): Free trace from
previous iteration.

gdb/ChangeLog
gdb/common/linux-btrace.c

index 0305e985c452b2e7c13a45563194d09788490dff..e1e6c744611fd584c5feb1e19cfd5e43ed2f22b5 100644 (file)
@@ -1,3 +1,8 @@
+2014-01-16  Markus Metzger  <markus.t.metzger@intel.com>
+
+       * common/linux-btrace.c (linux_read_btrace): Free trace from
+       previous iteration.
+
 2014-01-15  Doug Evans  <dje@google.com>
 
        * dwarf2read.c (open_and_init_dwp_file): Use pulongest to print
index ef240f707ef2ee101e5de93e09fdd3cb5249e032..0d36ea5c9580f85bcbbd1d4bad3404317c242bd6 100644 (file)
@@ -520,6 +520,9 @@ linux_read_btrace (struct btrace_target_info *tinfo,
     {
       data_head = header->data_head;
 
+      /* Delete any leftover trace from the previous iteration.  */
+      VEC_free (btrace_block_s, btrace);
+
       /* If there's new trace, let's read it.  */
       if (data_head != tinfo->data_head)
        {