Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Michael Snyder <msnyder@redhat.com>
To: Joel Brobecker <brobecker@gnat.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: [RFA] GDB/622 - clear current breakpoint in commands causes trouble
Date: Thu, 22 Aug 2002 18:53:00 -0000	[thread overview]
Message-ID: <3D6591F3.F61C8E8@redhat.com> (raw)
In-Reply-To: <20020731195012.GK683@gnat.com>

Joel Brobecker wrote:
> 
> As described in PR GDB/622:
> 
> Using the program in the gdb.base/commands.exp testcase, the following
> session shows that clearing the current breakpoint inside its commands
> list causes a memory-corruption problem:
> 
>        (gdb) b factorial
>        Breakpoint 1 at 0x8048582: file ./gdb.base/run.c, line 77.
>        (gdb) commands
>        Type commands for when breakpoint 1 is hit, one per line.
>        End with a line saying just "end".
>        >silent
>        >printf "factorial command-list executed\n"
>        >clear factorial
>        >cont
>        >end
>        (gdb) run 1
>        Starting program: [...]/gdb.base/commands 1
>        factorial command-list executed
>        warning: Invalid control type in command structure.      <<<--- (1)
>        (gdb)
> 
> (1) shows that the command-list becomes corrupted, and as a consequence,
> the execution is not resumed.  Instead, the expected output from the run
> command is:
> 
>        Starting program: [...]/gdb.base/run 1
>        factorial command-list executed
>        1
> 
>        Program exited normally.
>        (gdb)
> 
> The fix consists into executing a copy of the commands list, to protect
> this execution from using a list that has been freed. The attached patch
> introduces no regression. A new test has also been added to commands.exp.
> 
> Ok to apply?
> 
> 2002-07-31  Joel Brobecker  <brobecker@gnat.com>
> 
>         * cli/cli-scripts.c (copy_command_lines): New function.
>         (make_cleanup_free_command_lines): Make this function non static.
> 
>         * defs.h (copy_command_lines): Add definition.
>         (make_cleanup_free_command_lines): Add definition.
> 
>         * breakpoint.c (bpstat_do_actions): Execute a temporary copy of
>         the command-list associated to each breakpoint hit, in order to
>         avoid accessing a dangling pointer, in case one of the commands
>         in the list causes the breakpoint to be deleted.
> 
> Thanks,
> --
> Joel


Hey Joel, 

I've discovered a slight problem in this patch.
Your clean-ups are never being called.  Look at the bottom of
bpstat_do_actions.  They're just discarded.

The second problem is that, if they ever WERE called, 
they would probably cause a heap corruption error, because
the value of &cmd is always the same.

Michael


      parent reply	other threads:[~2002-08-23  1:37 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-31 13:09 Joel Brobecker
2002-08-20  6:27 ` Joel Brobecker
2002-08-22 15:01   ` Michael Snyder
2002-08-23 11:12     ` Don Howard
2002-08-24  2:17       ` [RFA] GDB/622 - clear current breakpoint in commands causestrouble Michael Snyder
2002-08-26 15:31       ` [RFA] GDB/622 - clear current breakpoint in commands causes trouble Kevin Buettner
2002-08-27 15:28         ` Andrew Cagney
2002-08-22 18:53 ` Michael Snyder [this message]

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=3D6591F3.F61C8E8@redhat.com \
    --to=msnyder@redhat.com \
    --cc=brobecker@gnat.com \
    --cc=gdb-patches@sources.redhat.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