This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] windows-nat: Also ignore ERROR_INVALID_HANDLE from SuspendThread()


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=5d9c55d355c8e5c688caa3fe43c0d95d538daf35

commit 5d9c55d355c8e5c688caa3fe43c0d95d538daf35
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Wed Jun 3 14:28:29 2015 +0100

    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>

Diff:
---
 gdb/ChangeLog     | 5 +++++
 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);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]