diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2015-06-03 14:28:29 +0100 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2015-06-10 13:28:19 +0100 |
commit | 5d9c55d355c8e5c688caa3fe43c0d95d538daf35 (patch) | |
tree | 4fd0332372bf9da4d266b134190a6774097bf7ee | |
parent | 040ea00bb02018cbe21ba732f68134ac91f370d2 (diff) | |
download | gdb-5d9c55d355c8e5c688caa3fe43c0d95d538daf35.zip gdb-5d9c55d355c8e5c688caa3fe43c0d95d538daf35.tar.gz gdb-5d9c55d355c8e5c688caa3fe43c0d95d538daf35.tar.bz2 |
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>
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/windows-nat.c | 7 |
2 files changed, 10 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index bfc6a0e..c9f527c 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 (handle_output_debug_string): Trim trailing '\n' from OutputDebugString. diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 851eb51..8a42511 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); |