[review v2] Fix crash with core + TUI + run

Pedro Alves (Code Review)
2019-11-12T12:58:06Z

Pedro Alves has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/483
......................................................................

Patch Set 2: Code-Review+2

(1 comment)

This is OK, but please adjust the commit log comment, as pointed out below, before pushing.

Thanks for fixing this, and for the testcase.

| --- /dev/null
| +++ /COMMIT_MSG
| @@ -1,0 +74,20 @@ have a target already, and tries to close it (from target.c):
| + target_close (prev); // <-- here
| + }
| + ...
| +
| +When the current target ('core_target') is being closed, it checks for
| +possible observers registered with it and calls them. TUI is one of
| +those observers, it gets called, tries to update the status line, and
| +GDB crashes.
| +
| +The real problem is that we are calling 'target_close' too soon,
| +before we actually have the new target on top of the stack.

PS2, Line 84:

No, as I mentioned in a previous comment, the real problem is that
we're clearing m_stack[stratum], but forget to adjust m_top.
target_stack::unpush does that, but here I forgot to do it.
Please adjust the comment.

| +Interestingly, this scenario is covered in 'target_stack::unpush', but
| +for some reason we are not calling it here. The fix, therefore, is to
| +call 'unpush' if there's a target on the stack.
| +
| +This patch has been tested on the Buildbot and no regressions have
| +been found. I'm also submitting a testcase for it.
| +
| +gdb/ChangeLog:
| +2019-11-08 Sergio Durigan Junior <sergiodj@redhat.com>

--
Gerrit-Project: binutils-gdb
Gerrit-Branch: master
Gerrit-Change-Id: I39e2f8b538c580c8ea5bf1d657ee877e47746c8f
Gerrit-Change-Number: 483
Gerrit-PatchSet: 2
Gerrit-Owner: Sergio Durigan Junior <sergiodj@redhat.com>
Gerrit-Reviewer: Pedro Alves <palves@redhat.com>
Gerrit-Reviewer: Sergio Durigan Junior <sergiodj@redhat.com>
Gerrit-CC: Simon Marchi <simon.marchi@polymtl.ca>
Gerrit-Comment-Date: Tue, 12 Nov 2019 12:57:58 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes