From: "Terekhov, Mikhail" <Mikhail.Terekhov@dell.com>
To: Simon Marchi <simon.marchi@polymtl.ca>,
"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Cc: Simon Marchi <simon.marchi@efficios.com>
Subject: RE: [PATCH 3/3] gdb: add assertion when marking the remote async flag
Date: Fri, 6 Oct 2023 21:09:32 +0000 [thread overview]
Message-ID: <DM5PR1901MB215098608BF5088C49A96908E5C9A@DM5PR1901MB2150.namprd19.prod.outlook.com> (raw)
In-Reply-To: <20231004020701.260411-4-simon.marchi@polymtl.ca>
> -----Original Message-----
> From: Gdb-patches <gdb-patches-
> bounces+mikhail.terekhov=dell.com@sourceware.org> On Behalf Of Simon
> Marchi via Gdb-patches
> Sent: Tuesday, October 3, 2023 10:04 PM
> To: gdb-patches@sourceware.org
> Cc: Simon Marchi <simon.marchi@efficios.com>
> Subject: [PATCH 3/3] gdb: add assertion when marking the remote async flag
>
>
> [EXTERNAL EMAIL]
>
> From: Simon Marchi <simon.marchi@efficios.com>
>
> As reported in bug 30630 [1], we hit a case where the remote target's async flag
> is marked while the target is not configured (yet) to work async. This should not
> happen. It is caught thanks to this assert in
> remote_target::wait:
>
> /* Start by clearing the flag that asks for our wait method to be called,
> we'll mark it again at the end if needed. If the target is not in
> async mode then the async token should not be marked. */
> if (target_is_async_p ())
> rs->clear_async_event_handler ();
> else
> gdb_assert (!rs->async_event_handler_marked ());
>
> This is helpful, but I think that we could have caught the problem earlier than
> that, at the moment we marked the handler. Catching problems earlier makes
> them easier to debug.
>
> [1]
> https://urldefense.com/v3/__https://sourceware.org/bugzilla/show_bug.cgi?id
> =30630__;!!LpKI!j0fTzubsC8RVdwinGn-r82-
> mX7hLUvNffNCQWwFTCYyR9EWj0CtlY9ERyT_AXgqsNQ0ZjS4Ls53fdBnUrLhWIw
> hIBW9P$ [sourceware[.]org]
>
> Change-Id: I7e229c74b04da82bef6a817d5a676be5cf52e833
> ---
> gdb/remote.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/gdb/remote.c b/gdb/remote.c index 38d0027dbf9e..7830b5cec33f
> 100644
> --- a/gdb/remote.c
> +++ b/gdb/remote.c
> @@ -424,7 +424,10 @@ class remote_state
> }
>
> void mark_async_event_handler ()
> - { ::mark_async_event_handler (m_async_event_handler_token); }
> + {
> + gdb_assert (this->is_async_p ());
> + ::mark_async_event_handler (m_async_event_handler_token); }
This change made the need for fix suggested in [1] more obvious.
The assert in mark_async_event_handler () is stronger than check in
remote_target::queued_stop_reply().
I.e. mark_async_event_handler () should not be called in
remote_target::queued_stop_reply() unless async_handler != NULL i.e.
target_is_async_p() !=0.
I'd suggest to merge in fix from [1] into this series.
>
> void clear_async_event_handler ()
> { ::clear_async_event_handler (m_async_event_handler_token); }
> --
> 2.42.0
Internal Use - Confidential
next prev parent reply other threads:[~2023-10-06 21:10 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-04 2:03 [PATCH 0/3] Add " Simon Marchi
2023-10-04 2:03 ` [PATCH 1/3] gdb: make remote_state's async token private Simon Marchi
2023-10-09 9:11 ` Andrew Burgess
2023-10-10 14:56 ` Simon Marchi
2023-10-04 2:04 ` [PATCH 2/3] gdb: add remote_state::{is_async_p,can_async_p} Simon Marchi
2023-10-09 9:20 ` Andrew Burgess
2023-10-10 15:01 ` Simon Marchi
2023-10-04 2:04 ` [PATCH 3/3] gdb: add assertion when marking the remote async flag Simon Marchi
2023-10-06 21:09 ` Terekhov, Mikhail [this message]
2023-10-07 1:35 ` Simon Marchi
2023-10-09 9:25 ` Andrew Burgess
2023-10-10 15:01 ` Simon Marchi
2023-10-06 21:28 ` [PATCH 0/3] Add " Terekhov, Mikhail
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=DM5PR1901MB215098608BF5088C49A96908E5C9A@DM5PR1901MB2150.namprd19.prod.outlook.com \
--to=mikhail.terekhov@dell.com \
--cc=gdb-patches@sourceware.org \
--cc=simon.marchi@efficios.com \
--cc=simon.marchi@polymtl.ca \
/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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).