From: Jon TURNEY <jon.turney@dronecode.org.uk>
To: Joel Brobecker <brobecker@adacore.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH] Fixes to Cygwin-specific signal handling
Date: Thu, 16 Apr 2015 19:24:00 -0000 [thread overview]
Message-ID: <55300C61.2080102@dronecode.org.uk> (raw)
In-Reply-To: <20150414131615.GI4704@adacore.com>
Thanks for taking the time to look at this.
On 14/04/2015 14:16, Joel Brobecker wrote:
>
> Overall, the patch looks reasonable to me. But I think there are
> at least 3 independent changes, and it would be nice to split those
> two out, for a couple of reasons:
> 1. It allows you to explain the nature of the problem, from the user's
> standpoint, that the patch is fixing (ie, what user-visible
> symptoms it fixes);
> 2. it allows us to see how each problem is fixed, and to deal with
> each issue separately.
Ok. Unfortunately I don't have access to the original problems which
inspired these patches, so I have reduced the scope to a problem I can
easily demonstrate and split things up further.
>
> The three issues I view as independent:
> a. ignoring "invalid handle" errors;
Yes, this is an unrelated change I should have excluded.
This was discussed somewhat in the thread starting at
https://cygwin.com/ml/gdb-patches/2013-06/msg00237.html
> b. unsetting saved_context.ContextFlags
> c. the renaming of have_saved_context into signal_thread_id
> so you can compare the current thread id with the saved
> signal_thread_id.
>
> A few minor comments below.
>
>> @@ -849,8 +853,12 @@ handle_output_debug_string (struct target_waitstatus *ourstatus)
>> &saved_context,
>> __COPY_CONTEXT_SIZE, &n)
>> && n == __COPY_CONTEXT_SIZE)
>> - have_saved_context = 1;
>> - current_event.dwThreadId = retval;
>> + {
>> + signal_thread_id = retval;
>> + saved_context.ContextFlags = 0; /* Don't attempt to call SetThreadContext */
>
> Can you move the comment just above the statement so as to avoid
> exceeding the maximum line length, and also explain why we should
> not call SetThreadContext?
I've dropped this change for the moment.
>> @@ -1330,7 +1338,6 @@ get_windows_debug_event (struct target_ops *ops,
>> event_code = current_event.dwDebugEventCode;
>> ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
>> th = NULL;
>> - have_saved_context = 0;
>
> Normally, there is a corresponding addition that sets signal_thread_id
> to zero. This leads me to be believe that there might be an additional
> user-visible symptom that this patch fixes?
I'm sorry I don't follow you.
have_saved_context is reset in do_windows_fetch_inferior_registers()
when the context is actually retrieved.
It seems odd to reset it in get_windows_debug_event() as it seems that
any other Windows debug event between the Cygwin signal message and the
do_windows_fetch_inferior_registers() will prevent the saved context
being used, if it's possible for that to happen.
>> @@ -1501,12 +1508,12 @@ get_windows_debug_event (struct target_ops *ops,
>> else
>> {
>> inferior_ptid = ptid_build (current_event.dwProcessId, 0,
>> - retval);
>> - current_thread = th ?: thread_rec (current_event.dwThreadId, TRUE);
>> + thread_id);
>> + current_thread = th ?: thread_rec (thread_id, TRUE);
>
> I know you are just repeating what was there before, but I don't think
> this is the clearest way to do things. GDB Coding Standards also do not
> allow assignments within conditions. I suggest instead:
>
> current_thread = th;
> if (!current_thread)
> thread_rec (thread_id, TRUE);
I've done this (with the last line as an assignment), but you'll have to
help me find where the Coding Standard says that.
[1] mentions not using assignments inside if conditions, but I don't see
any mention of ?:
[1] http://www.gnu.org/prep/standards/standards.html#Syntactic-Conventions
>> out:
>> - return retval;
>> + return (int) thread_id;
>
> I'm wondering whether the cast is actually necessary?
On third thoughts, I think not.
> Also, it looks like the function's comment might be stale:
>
> /* Get the next event from the child. Return 1 if the event requires
> handling by WFI (or whatever). */
> static int
> get_windows_debug_event (struct target_ops *ops,
> int pid, struct target_waitstatus *ourstatus)
>
> Would you mind fixing that?
Done.
next prev parent reply other threads:[~2015-04-16 19:24 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-14 11:03 Jon Turney
2015-04-14 13:16 ` Joel Brobecker
2015-04-14 14:38 ` Eli Zaretskii
2015-04-16 19:24 ` Jon TURNEY [this message]
2015-04-22 14:23 ` Joel Brobecker
2015-04-16 19:23 ` [PATCH 0/5] Fix to Cygwin-specific signal handling (v2) Jon Turney
2015-04-16 19:23 ` [PATCH 2/5] windows-nat: Cleanups in get_windows_debug_event Jon Turney
2015-04-22 13:52 ` Joel Brobecker
2015-04-16 19:24 ` [PATCH 3/5] windows-nat: Fix misspelling in debug output Jon Turney
2015-04-22 13:55 ` Joel Brobecker
2015-04-16 19:24 ` [PATCH 1/5] windows-nat: Don't use ternary conditional operator in get_windows_debug_event Jon Turney
2015-04-22 13:50 ` Joel Brobecker
2015-04-16 19:24 ` [PATCH 5/5] windows-nat: Don't change current_event.dwThreadId in handle_output_debug_string() Jon Turney
2015-04-22 14:18 ` Joel Brobecker
2015-04-16 19:24 ` [PATCH 4/5] windows-nat: Report an error if ContinueDebugEvent() fails Jon Turney
2015-04-22 14:10 ` Joel Brobecker
2015-06-10 13:06 ` [PATCH 0/5] Fix to Cygwin-specific signal handling (v2) Jon TURNEY
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=55300C61.2080102@dronecode.org.uk \
--to=jon.turney@dronecode.org.uk \
--cc=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
/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