From: Philippe Waroquiers <philippe.waroquiers@skynet.be>
To: Tom Tromey <tom@tromey.com>, Joel Brobecker <brobecker@adacore.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [RFA_v4 1/8] Add helper functions parse_flags and parse_flags_qcs
Date: Tue, 31 Jul 2018 21:13:00 -0000 [thread overview]
Message-ID: <1533071582.1467.21.camel@skynet.be> (raw)
In-Reply-To: <87va8v4dmy.fsf@tromey.com>
On Tue, 2018-07-31 at 09:40 -0600, Tom Tromey wrote:
> > > > > > "Joel" == Joel Brobecker <brobecker@adacore.com> writes:
> > > I also found this bug this weekend, while trying out -fsanitize=address.
> > >
> > > I have a patch for this one. I haven't written the ChangeLog yet but I
> > > will try to do it as soon as possible.
> > >
> > > Actually I have patches to make gdb nearly -fsanitize=address clean; or
> > > at least, the ordinary test suite on my machine is down to 1 failure
> > > (there are some additional gdbserver failures in bugzilla that I haven't
> > > looked at yet). My series also addresses much of -fsanitize=undefined
> > > as well.
>
> Joel> Very nice!
>
> You may have to wait a bit longer because the buildbot is telling me
> this patch is no good. I'll try to debug it tonight.
As far as I can see, this problem is a regression that appeared in gdb 8.1,
but which was made (more) visible by the 'parse_flags' patch in (future) 8.3.
At least valgrind + gdb 8.0 does not give a problem with the small reproducerÂ
command 1 2
end
while it gives an error with gdb 8.1.
We also have a (small) functional regression:
with gdb 8.0, it was possible to remove all commands of a set of
breapoints by doing the above 'command 1 2/end'.
From 8.1 onwards, when giving such empty command list, gdb asks
the list of command for each breakpoint, instead of asking it once.
The below patch seems to solve the memory corruption (at least
for the simple case), but does not solve the functional regression that
appeared in 8.1.
I am wondering if the correct solution would not be to avoid
having input lines memory being managed 'manually' like it is now,
as having the 'input const char* arg' disappearing 'under the carpet'
is quite tricky, and we might have other places where a previous
line of input must be kept alive, while new lines of input have
to be read.
Philippe
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 6b6e1f6c25..dabd81e138 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -1222,6 +1222,9 @@ commands_command_1 (const char *arg, int from_tty,
Â
   std::string new_arg;
Â
+Â Â /* arg might be an input line that might be released when reading
+     new input lines for the list of commands.  So, build a new arg
+     to keep the input alive during the map_breakpoint_numbers call.  */
   if (arg == NULL || !*arg)
     {
       if (breakpoint_count - prev_breakpoint_count > 1)
@@ -1231,6 +1234,11 @@ commands_command_1 (const char *arg, int from_tty,
        new_arg = string_printf ("%d", breakpoint_count);
       arg = new_arg.c_str ();
     }
+Â Â else
+Â Â Â Â {
+Â Â Â Â Â Â new_arg = arg;
+Â Â Â Â Â Â arg = new_arg.c_str ();
+Â Â Â Â }
Â
   map_breakpoint_numbers
     (arg, [&] (breakpoint *b)
next prev parent reply other threads:[~2018-07-31 21:13 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-10 21:39 [RFA_v4 0/8] Implement 'frame apply COMMAND', enhance 'thread apply COMMAND' Philippe Waroquiers
2018-07-10 21:39 ` [RFA_v4 8/8] Add a self-test for cli-utils.c Philippe Waroquiers
2018-07-10 21:39 ` [RFA_v4 4/8] Documents the new commands 'frame apply', faas, taas, tfaas Philippe Waroquiers
2018-07-11 3:06 ` Eli Zaretskii
2018-07-11 5:57 ` Philippe Waroquiers
2018-07-10 21:39 ` [RFA_v4 1/8] Add helper functions parse_flags and parse_flags_qcs Philippe Waroquiers
2018-07-30 20:16 ` Joel Brobecker
2018-07-30 21:10 ` Tom Tromey
2018-07-31 13:52 ` Joel Brobecker
2018-07-31 15:41 ` Tom Tromey
2018-07-31 21:13 ` Philippe Waroquiers [this message]
2018-08-01 4:04 ` Tom Tromey
2018-08-01 4:34 ` Tom Tromey
2018-07-30 21:48 ` Philippe Waroquiers
2018-07-10 21:39 ` [RFA_v4 6/8] Add a test for 'frame apply' Philippe Waroquiers
2018-07-10 21:39 ` [RFA_v4 5/8] Announce the user visible changes for frame/thread apply in NEWS Philippe Waroquiers
2018-07-10 21:39 ` [RFA_v4 7/8] Modify gdb.threads/pthreads.exp to test FLAG qcs arguments for thread apply. Also, add prefixes to make some non unique tests unique Philippe Waroquiers
2018-07-10 21:39 ` [RFA_v4 2/8] Implement frame apply [all | COUNT | -COUNT | level LEVEL... ] [FLAG]... COMMAND Philippe Waroquiers
2018-07-14 1:49 ` Simon Marchi
2018-07-14 12:37 ` Tom Tromey
2018-07-10 21:39 ` [RFA_v4 3/8] Add [FLAG]... arguments to 'thread apply' Philippe Waroquiers
2018-07-11 10:58 ` [RFA_v4 0/8] Implement 'frame apply COMMAND', enhance 'thread apply COMMAND' Pedro Alves
2018-07-12 21:12 ` Philippe Waroquiers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1533071582.1467.21.camel@skynet.be \
--to=philippe.waroquiers@skynet.be \
--cc=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
--cc=tom@tromey.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox