windows-nat: Also ignore ERROR_INVALID_HANDLE from SuspendThread()

Discussed somewhat in the thread at
https://cygwin.com/ml/gdb-patches/2013-06/msg00680.html

This is pretty straightforward to demonstrate on Cygwin currently:

$ cat main.c

int main()
{
  return 0;
}

$ gcc -g -O0 main.c -o main

$ ./gdb ./main
[...]
(gdb) r
Starting program: /wip/binutils-gdb/build.x86_64/gdb/main
warning: SuspendThread (tid=0x1cf0) failed. (winerr 6)
[Inferior 1 (process 976) exited normally]

with this patch applied:

$ ./gdb ./main
[...]
(gdb) r
Starting program: /wip/binutils-gdb/build.x86_64/gdb/main
[Inferior 1 (process 4852) exited normally]

gdb/ChangeLog:

2015-06-03  Jon Turney  <jon.turney@dronecode.org.uk>

	* windows-nat.c (thread_rec): Also ignore ERROR_INVALID_HANDLE
	from SuspendThread().

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
This commit is contained in:
Jon Turney 2015-06-03 14:28:29 +01:00
parent 040ea00bb0
commit 5d9c55d355
2 changed files with 10 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2015-06-03 Jon Turney <jon.turney@dronecode.org.uk>
* windows-nat.c (thread_rec): Also ignore ERROR_INVALID_HANDLE
from SuspendThread().
2015-06-03 Jon Turney <jon.turney@dronecode.org.uk>
* windows-nat.c (handle_output_debug_string): Trim trailing '\n'

View File

@ -310,8 +310,11 @@ thread_rec (DWORD id, int get_context)
/* We get Access Denied (5) when trying to suspend
threads that Windows started on behalf of the
debuggee, usually when those threads are just
about to exit. */
if (err != ERROR_ACCESS_DENIED)
about to exit.
We can get Invalid Handle (6) if the main thread
has exited. */
if (err != ERROR_INVALID_HANDLE
&& err != ERROR_ACCESS_DENIED)
warning (_("SuspendThread (tid=0x%x) failed."
" (winerr %u)"),
(unsigned) id, (unsigned) err);