RFA: infptrace fix

J. Johnston
2003-02-24T23:31:44Z

[-- Attachment #1: Type: text/plain, Size: 749 bytes --]

The following patch fixes a problem on linux regarding attached
processes. When gdb quits, it goes to detach the process. If the
process has already been killed, the ptrace detach call sets errno.
This causes infptrace.c: detach() to issue a perror_with_name()
call which eventually gets caught and the user is returned to the
gdb prompt. If we try and quit again, we go through the same
sequence and so on and so on.

The patch recognizes if errno is set to ESRCH, indicating that the
process cannot be found which is ok and should not result in an
error being flagged.

Ok to install?

-- Jeff J.

2003-02-24 Jeff Johnston <jjohnstn@redhat.com>

* infptrace.c (detach): Do not flag error if ptrace detach fails and
errno is set to ESRCH.

[-- Attachment #2: infptrace.patch --]
[-- Type: text/plain, Size: 495 bytes --]

Index: infptrace.c
===================================================================
RCS file: /cvs/src/src/gdb/infptrace.c,v
retrieving revision 1.22
diff -u -r1.22 infptrace.c
--- infptrace.c 8 Nov 2002 23:48:38 -0000 1.22
+++ infptrace.c 24 Feb 2003 23:26:22 -0000
@@ -301,7 +301,7 @@
errno = 0;
ptrace (PT_DETACH, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) 1,
signal);
- if (errno)
+ if (errno && errno != ESRCH)
perror_with_name ("ptrace");
attach_flag = 0;
}