Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Christopher Faylor <cgf-use-the-mailinglist-please@sourceware.org>
To: gdb-patches@sourceware.org,
	Joel Brobecker <brobecker@adacore.com>,
	Eli Zaretskii <eliz@gnu.org>
Subject: Re: [commit/windows] Add thread ID in SuspendThread error warning message.
Date: Tue, 25 Jun 2013 21:13:00 -0000	[thread overview]
Message-ID: <20130625210410.GA5980@ednor.casa.cgf.cx> (raw)
In-Reply-To: <20130624233421.GD5326@adacore.com>

On Mon, Jun 24, 2013 at 04:34:21PM -0700, Joel Brobecker wrote:
>> >That's interesting. I have the following patch in AdaCore's tree
>> >which I have been uhming and ahming about. Would it apply to your
>> >situation as well?
>> >
>> >-                   warning (_("SuspendThread failed. (winerr %u)"),
>> >-                            (unsigned) err);
>> >-                   return NULL;
>> >+                   /* If SuspendThread failed with error 5 (access
>> >+                      denied), then ignore the error.  It's unclear
>> >+                      where this comes from and how to prevent it.
>> >+                      But in the meantime, ignoring it seems to allow
>> >+                      us to inspect the thread (including fetching
>> >+                      registers) without apparent ill effect.  */
>> >+                   if (err != 5)
>> >+                     {
>> >+                       warning (_("SuspendThread (tid=0x%x) failed."
>> >+                                  " (winerr %d)"),
>> >+                                (unsigned) id, (unsigned) err);
>> >+                       return NULL;
>> >+                     }
>> 
>> That's basically what I'm doing in the Cygwin release:
>> 
>>                 if (SuspendThread (th->h) == (DWORD) -1)
>>                   {
>>                     DWORD err = GetLastError ();
>> -                   warning (_("SuspendThread failed. (winerr %u)"),
>> -                            (unsigned) err);
>> +                   /* Can get a ERROR_INVALID_HANDLE if the main thread has
>> +                      exited. */
>> +                   if (err != ERROR_INVALID_HANDLE)
>> +                     warning (_("SuspendThread(%p) failed. (winerr %u)"),
>> +                              (void *) th->h, (unsigned) err);
>>                     return NULL;
>>                   }
>>                 th->suspended = 1;
>
>That's interesting again. If I read MSDN right, ERROR_INVALID_HANDLE
>is 6, whereas I ignore the error for code 5 (access denied). I say
>that it's interesting, because the report we had was for the error
>you ignore.

I have only seen an invalid handle error and I think it makes sense
since it's possible that the thread has disappeared when this function
is called.  I thought it happened when the main thread exits before
some other thread.

>Someone was able to reproduce this issue consistently, and I wish
>they had more time to help me investigate this. If we had more
>details on the two error cases, I would not mind checking in
>a merge of both our changes.

I think adding the tid is a good idea so if you want to merge the
two that's fine with me.  I've been meaning to dust off my changes
and submit them for approval anyway so you'd save me that step.

cgf


      reply	other threads:[~2013-06-25 21:04 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-11 10:22 Joel Brobecker
2013-06-11 10:50 ` Pedro Alves
2013-06-11 11:07   ` Joel Brobecker
2013-06-11 13:25     ` Pedro Alves
2013-06-11 16:27 ` Eli Zaretskii
2013-06-11 16:38   ` Joel Brobecker
2013-06-11 17:40     ` Eli Zaretskii
2013-06-18 18:09       ` Christopher Faylor
2013-06-19  1:57         ` Joel Brobecker
2013-06-20 18:51           ` Christopher Faylor
2013-06-24 23:45             ` Joel Brobecker
2013-06-25 21:13               ` Christopher Faylor [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=20130625210410.GA5980@ednor.casa.cgf.cx \
    --to=cgf-use-the-mailinglist-please@sourceware.org \
    --cc=brobecker@adacore.com \
    --cc=eliz@gnu.org \
    --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