From 5d9c55d355c8e5c688caa3fe43c0d95d538daf35 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Wed, 3 Jun 2015 14:28:29 +0100 Subject: [PATCH] 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 * windows-nat.c (thread_rec): Also ignore ERROR_INVALID_HANDLE from SuspendThread(). Signed-off-by: Jon Turney --- gdb/ChangeLog | 5 +++++ gdb/windows-nat.c | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index bfc6a0ebf2..c9f527c727 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2015-06-03 Jon Turney + + * windows-nat.c (thread_rec): Also ignore ERROR_INVALID_HANDLE + from SuspendThread(). + 2015-06-03 Jon Turney * windows-nat.c (handle_output_debug_string): Trim trailing '\n' diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 851eb5192d..8a425113a0 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -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);