]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
ASAN attach crash - 7.9 regression
authorJan Kratochvil <jan.kratochvil@redhat.com>
Tue, 4 Aug 2015 11:40:44 +0000 (13:40 +0200)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Tue, 25 Aug 2015 15:45:08 +0000 (17:45 +0200)
-fsanitize=address
gdb.base/attach-pie-noexec.exp

==32586==ERROR: AddressSanitizer: heap-use-after-free on address 0x60200004ed90 at pc 0x48ad50 bp 0x7ffceb3aef50 sp 0x7ffceb3aef20
READ of size 2 at 0x60200004ed90 thread T0
    #0 0x48ad4f in __interceptor_strlen (/home/jkratoch/redhat/gdb-test-asan/gdb/gdb+0x48ad4f)
    #1 0xeafe5c in xstrdup xstrdup.c:33
    #2 0x85e024 in attach_command /home/jkratoch/redhat/gdb-test-asan/gdb/infcmd.c:2680

regressed by:

commit 6c4486e63f7583ed85a0c72841f6ccceebbf858e
Author: Pedro Alves <palves@redhat.com>
Date:   Fri Oct 17 13:31:26 2014 +0100
    PR gdb/17471: Repeating a background command makes it foreground

gdb/ChangeLog
2015-08-04  Jan Kratochvil  <jan.kratochvil@redhat.com>

PR gdb/18767
* infcmd.c (attach_command): Move ARGS_CHAIN cleanup after last ARGS
use.

gdb/ChangeLog
gdb/infcmd.c

index 71664a0be4b21d6dded49a558d8fbe00f66d8690..ab702439927d2ad03a7c059c7bec5b7c02dff120 100644 (file)
@@ -1,3 +1,9 @@
+2015-08-25  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       PR gdb/18767
+       * infcmd.c (attach_command): Move ARGS_CHAIN cleanup after last ARGS
+       use.
+
 2015-08-24  Pedro Alves  <palves@redhat.com>
 
        PR gdb/18804
index 03282a71da06f6280a1850522ed052fcf8faf859..6fa751559c19975716e9414236768e580334028e 100644 (file)
@@ -2617,9 +2617,6 @@ attach_command (char *args, int from_tty)
      shouldn't refer to attach_target again.  */
   attach_target = NULL;
 
-  /* Done with ARGS.  */
-  do_cleanups (args_chain);
-
   /* Set up the "saved terminal modes" of the inferior
      based on what modes we are starting it with.  */
   target_terminal_init ();
@@ -2684,12 +2681,19 @@ attach_command (char *args, int from_tty)
          a->async_exec = async_exec;
          add_inferior_continuation (attach_command_continuation, a,
                                     attach_command_continuation_free_args);
+
+         /* Done with ARGS.  */
+         do_cleanups (args_chain);
+
          return;
        }
 
       wait_for_inferior ();
     }
 
+  /* Done with ARGS.  */
+  do_cleanups (args_chain);
+
   attach_command_post_wait (args, from_tty, async_exec);
 }