From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23502 invoked by alias); 15 Dec 2014 21:17:56 -0000 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 Received: (qmail 23488 invoked by uid 89); 15 Dec 2014 21:17:55 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 15 Dec 2014 21:17:54 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id sBFLHn95019412 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 15 Dec 2014 16:17:50 -0500 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id sBFLHmTq005392; Mon, 15 Dec 2014 16:17:49 -0500 Message-ID: <548F4FFC.8060509@redhat.com> Date: Mon, 15 Dec 2014 21:17:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: Joel Brobecker CC: gdb-patches@sourceware.org Subject: Re: [RFA/Linux] Ask kernel to kill inferior when GDB terminates References: <1415984034-27122-1-git-send-email-brobecker@adacore.com> <54663729.6010708@redhat.com> <20141114173255.GD5774@adacore.com> <20141119092547.GP5774@adacore.com> <546C69D4.5090300@redhat.com> <20141213162757.GL5457@adacore.com> <548EE088.20506@redhat.com> <20141215204323.GE5457@adacore.com> In-Reply-To: <20141215204323.GE5457@adacore.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2014-12/txt/msg00423.txt.bz2 On 12/15/2014 08:43 PM, Joel Brobecker wrote: > GDB with signal 9. After GDB is killed, the inferior still remains > in "interruptible sleep (waiting for an event to complete)" state. This makes it sound like "interruptible sleep" is some kind of wedged state waiting for a debugger. But, this simply means your process is just running as normal, and your test's case, normal means idling. Most likely, your test program had a "sleep" call in it. IOW, it'd be in sleep state even if had been started outside gdb. Another test program could go to "T (stopped)", "R (running)", etc. > -/* Determine ptrace features available on this target. */ > +/* Determine ptrace features available on this target. > + ATTACHED should be nonzero iff we've attached to the inferior. */ > > static void > -linux_check_ptrace_features (void) > +linux_check_ptrace_features (int attached) > { > int child_pid, ret, status; > > @@ -338,6 +340,9 @@ linux_check_ptrace_features (void) > > linux_test_for_tracefork (child_pid); > > + if (!attached) > + linux_test_for_exitkill (child_pid); This test must be called unconditionally. current_ptrace_options is only initialized once: void linux_enable_event_reporting (pid_t pid) { /* Check if we have initialized the ptrace features for this target. If not, do it now. */ if (current_ptrace_options == -1) linux_check_ptrace_features (); so if the first process gdbserver debugs is an "attach" process, but the second one is not, you'll miss setting PTRACE_O_EXITKILL on the second process. Instead, always call linux_test_for_exitkill, and then in linux_enable_event_reporting mask out PTRACE_O_EXITKILL from current_ptrace_options if 'attached' is false. Thanks, Pedro Alves