binutils-gdb/gdb/nat
Daniel Colascione 015de6884f Warn users about mismatched PID namespaces
Linux supports multiple "PID namespaces".  Processes in different PID
namespaces have different views of the system process list.  Sometimes,
a single process can appear in more than one PID namespace, but with a
different PID in each.  When GDB and its target are in different PID
namespaces, various features can break due to the mismatch between
what the target believes its PID to be and what GDB believes its PID
to be.  The most visible broken functionality is thread enumeration
silently failing.

This patch explicitly warns users against trying to debug across PID
namespaces.

The patch introduced no new failures in my test suite run on an x86_64
installation of Ubuntu 14.10.  It doesn't include a test: writing an
automated test that exercises this code would be very involved because
CLONE_NEWNS requires CAP_SYS_ADMIN; the easier way to reproduce the
problem is to start a new lxc container.

gdb/
2014-11-11  Daniel Colascione  <dancol@dancol.org>

	Warn about cross-PID-namespace debugging.
	* nat/linux-procfs.h (linux_proc_pid_get_ns): New prototype.
	* nat/linux-procfs.c (linux_proc_pid_get_ns): New function.
	* linux-thread-db.c (check_pid_namespace_match): New function.
	(thread_db_inferior_created): Call it.
2014-11-11 14:18:23 +00:00
..
gdb_thread_db.h Move shared native target specific code to gdb/nat 2014-06-20 14:06:48 +01:00
glibc_thread_db.h Move shared native target specific code to gdb/nat 2014-06-20 14:06:48 +01:00
linux-btrace.c Remove GDBSERVER uses from linux-btrace.c 2014-09-12 10:11:42 +01:00
linux-btrace.h Remove GDBSERVER uses from linux-btrace.c 2014-09-12 10:11:42 +01:00
linux-nat.h
linux-osdata.c Include common-defs.h instead of defs.h/server.h in shared code 2014-09-12 10:11:42 +01:00
linux-osdata.h Move ptid.h to common-defs.h 2014-08-07 09:06:44 +01:00
linux-procfs.c Warn users about mismatched PID namespaces 2014-11-11 14:18:23 +00:00
linux-procfs.h Warn users about mismatched PID namespaces 2014-11-11 14:18:23 +00:00
linux-ptrace.c Refactor ptrace extended event status. 2014-09-19 10:54:34 -07:00
linux-ptrace.h Refactor ptrace extended event status. 2014-09-19 10:54:34 -07:00
linux-waitpid.c Clarify GDBSERVER use in linux-waitpid.c 2014-09-12 11:03:49 +01:00
linux-waitpid.h Move linux-nat.c:status_to_str to nat/linux-waitpid.c. 2014-02-27 14:30:08 +00:00
mips-linux-watch.c Include common-defs.h instead of defs.h/server.h in shared code 2014-09-12 10:11:42 +01:00
mips-linux-watch.h Do not include defs.h or server.h in any header file 2014-07-31 13:25:01 +01:00
x86-cpuid.h Rename 32- and 64-bit Intel files from "i386" to "x86" 2014-09-02 16:54:08 +01:00
x86-dregs.c Remove GDBSERVER uses from x86-dregs.c 2014-09-12 10:11:42 +01:00
x86-dregs.h x86 debug address register clarifications 2014-09-03 12:40:49 +01:00
x86-gcc-cpuid.h Rename 32- and 64-bit Intel files from "i386" to "x86" 2014-09-02 16:54:08 +01:00