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] gdbserver/libthread_db: Don't ignore memory reading failures


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

commit 5b9ca4d43ba0313612e8ad6e50221e8f20ebd129
Author: Pedro Alves <palves@redhat.com>
Date:   Fri Sep 29 12:33:41 2017 +0100

    gdbserver/libthread_db: Don't ignore memory reading failures
    
    If we had this in place before, then the regression fixed by the
    previous commit would have been been visible is all test runs.  E.g.:
    
      Running src/gdb/testsuite/gdb.threads/multi-create-ns-info-thr.exp ...
      FAIL: gdb.threads/multi-create-ns-info-thr.exp: continue to breakpoint 6
    
    Debugging manually we'd see this:
      gdbserver: Cannot get thread handle for LWP 1467: generic error
    
    Instead of:
      gdbserver: PID mismatch!  Expected 27472, got 27471
    
    which is misleading - gdbserver didn't 27471, that was stale stack
    data from previous function invocations.
    
    gdb/gdbserver/ChangeLog:
    2017-09-29  Pedro Alves  <palves@redhat.com>
    
    	* proc-service.c (ps_pdread): Return PS_ERR if reading memory
    	fails.

Diff:
---
 gdb/gdbserver/ChangeLog      | 5 +++++
 gdb/gdbserver/proc-service.c | 3 ++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index f27451d..0dbcae2 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,5 +1,10 @@
 2017-09-29  Pedro Alves  <palves@redhat.com>
 
+	* proc-service.c (ps_pdread): Return PS_ERR if reading memory
+	fails.
+
+2017-09-29  Pedro Alves  <palves@redhat.com>
+
 	* linux-low.c (handle_extended_wait): Pass parent thread instead
 	of process to thread_db_notice_clone.
 	* linux-low.h (thread_db_notice_clone): Replace parent process
diff --git a/gdb/gdbserver/proc-service.c b/gdb/gdbserver/proc-service.c
index 98d6acd..5b058fd 100644
--- a/gdb/gdbserver/proc-service.c
+++ b/gdb/gdbserver/proc-service.c
@@ -80,7 +80,8 @@ ps_err_e
 ps_pdread (gdb_ps_prochandle_t ph, psaddr_t addr,
 	   gdb_ps_read_buf_t buf, gdb_ps_size_t size)
 {
-  read_inferior_memory ((uintptr_t) addr, (gdb_byte *) buf, size);
+  if (read_inferior_memory ((uintptr_t) addr, (gdb_byte *) buf, size) != 0)
+    return PS_ERR;
   return PS_OK;
 }


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