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> 2015-06-03 Jon Turney <jon.turney@dronecode.org.uk>
* windows-nat.c (handle_output_debug_string): Trim trailing '\n' * 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 /* We get Access Denied (5) when trying to suspend
threads that Windows started on behalf of the threads that Windows started on behalf of the
debuggee, usually when those threads are just debuggee, usually when those threads are just
about to exit. */ about to exit.
if (err != ERROR_ACCESS_DENIED) 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." warning (_("SuspendThread (tid=0x%x) failed."
" (winerr %u)"), " (winerr %u)"),
(unsigned) id, (unsigned) err); (unsigned) id, (unsigned) err);