This is the mail archive of the
gdb-cvs@sourceware.org
mailing list for the GDB project.
[binutils-gdb] gdbserver/libthread_db: Don't ignore memory reading failures
- From: Pedro Alves <palves at sourceware dot org>
- To: gdb-cvs at sourceware dot org
- Date: 29 Sep 2017 12:11:03 -0000
- Subject: [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;
}