This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 4/4] windows-nat: Also ignore ERROR_INVALID_HANDLE from SuspendThread()
- From: Jon Turney <jon dot turney at dronecode dot org dot uk>
- To: gdb-patches at sourceware dot org
- Cc: Jon Turney <jon dot turney at dronecode dot org dot uk>
- Date: Wed, 3 Jun 2015 18:29:52 +0100
- Subject: [PATCH 4/4] windows-nat: Also ignore ERROR_INVALID_HANDLE from SuspendThread()
- Authentication-results: sourceware.org; auth=none
- References: <1433352592-9728-1-git-send-email-jon dot turney at dronecode dot org dot uk>
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>
---
gdb/ChangeLog | 5 +++++
gdb/windows-nat.c | 7 +++++--
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 996dffe..eddcf4d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
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 : Consistently use numeric get_context parameter
to thread_rec() throughout.
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index ce1513f..75d9414 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);
--
2.1.4