From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24154 invoked by alias); 13 Mar 2012 14:35:12 -0000 Received: (qmail 23923 invoked by uid 22791); 13 Mar 2012 14:35:11 -0000 X-SWARE-Spam-Status: No, hits=-6.8 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 13 Mar 2012 14:34:57 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q2DEYuHG009192 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 13 Mar 2012 10:34:57 -0400 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q2DEYtYt017405; Tue, 13 Mar 2012 10:34:55 -0400 Message-ID: <4F5F5B0F.8010804@redhat.com> Date: Tue, 13 Mar 2012 14:35:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.1) Gecko/20120216 Thunderbird/10.0.1 MIME-Version: 1.0 To: Jan Kratochvil CC: Pedro Alves , gdb-patches@sourceware.org Subject: Re: [patch 2/3] attach-fail-reasons: Say more than ptrace: Operation not permitted. References: <20120306061710.GB24004@host2.jankratochvil.net> <4F58BA4A.9090903@redhat.com> <20120313094307.GA25939@host2.jankratochvil.net> <4F5F226F.5090304@redhat.com> <20120313135457.GA8363@host2.jankratochvil.net> In-Reply-To: <20120313135457.GA8363@host2.jankratochvil.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-03/txt/msg00434.txt.bz2 On 03/13/2012 01:54 PM, Jan Kratochvil wrote: > On Tue, 13 Mar 2012 11:33:19 +0100, Pedro Alves wrote: >> On 03/13/2012 09:43 AM, Jan Kratochvil wrote: >>> I agree, this is affecting all the /proc operations. > > OK, so not completely all. > > >> Yeah, although if you're already attached to the process, then the risk of /proc/.. >> hitting the wrong pid is much lower, though it does exist. > > How? It remains as 'Z (zombie)' with non-zero 'TracerPid' and even root > cannot reuse that PID without killing the tracer. E.g., with a multi-threaded exec, the execing thread just disappears from /proc/TID as in reality the kernel changed the execing thread's TID, so it's possible we end trying to open the non-existing /proc/TID/... before handling the exec event. I think there were other ways for a tracee to be completely killed/removed behind the tracer's back, but maybe that was only with older kernels, if it ever was. >>> (2b) If introducing a new framework to gdbserver code we should bring in STL >>> and not the libiberty/gdb code. But we cannot yet use STL. >> >> Although I'm a C++ supporter, I really don't think such C++ arguments hold >> much weight for the current C based code base. > > Offtopic here but I think this code was another argument for C++, wasn't it? It was like saying that if you had posted this code written in C++ doing this dynamic string growth with delete[]/new[] to reallocate (instead of std::string, not knowing its existence), and justified it by claiming the right solution is to switch to Java. Eventually. And only maybe. > gdb/ > 2012-03-13 Jan Kratochvil > > * common/linux-procfs.c (linux_proc_get_int): New, from > linux_proc_get_tgid, change its LWPID type to pid_t, add parameter > field. > (linux_proc_get_tgid): Only call linux_proc_get_int. > (linux_proc_get_tracerpid): New. > (linux_proc_pid_has_state): New, from linux_proc_pid_is_zombie. > (linux_proc_pid_is_stopped, linux_proc_pid_is_zombie): Only call > linux_proc_pid_has_state. > * common/linux-procfs.h (linux_proc_get_tracerpid): New declaration. > * common/linux-ptrace.c: Include linux-procfs.h and buffer.h. > (linux_ptrace_attach_warnings): New. > * common/linux-ptrace.h (struct buffer, linux_ptrace_attach_warnings): > New declaration. > * linux-nat.c: Include exceptions.h, linux-ptrace.h and buffer.h. > (linux_nat_attach): New variables ex, buffer, message and message_s. > Wrap to_attach by TRY_CATCH and call linux_ptrace_attach_warnings. > > gdb/gdbserver/ > 2012-03-13 Jan Kratochvil > > * linux-low.c (linux_attach_lwp_1): New variable buffer. Call > linux_ptrace_attach_warnings. > > gdb/testsuite/ > 2012-03-06 Jan Kratochvil > > * gdb.base/attach-twice.c: New files. > * gdb.base/attach-twice.exp: New files. > Looks good too. -- Pedro Alves