From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21069 invoked by alias); 7 Jul 2014 15:06:21 -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 21045 invoked by uid 89); 7 Jul 2014 15:06:20 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.2 X-HELO: rock.gnat.com Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Mon, 07 Jul 2014 15:06:18 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 6958F11627A; Mon, 7 Jul 2014 11:06:16 -0400 (EDT) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id oZeSYiatydZ5; Mon, 7 Jul 2014 11:06:16 -0400 (EDT) Received: from joel.gnat.com (localhost.localdomain [127.0.0.1]) by rock.gnat.com (Postfix) with ESMTP id 41143116262; Mon, 7 Jul 2014 11:06:16 -0400 (EDT) Received: by joel.gnat.com (Postfix, from userid 1000) id D464840F62; Mon, 7 Jul 2014 08:06:14 -0700 (PDT) Date: Mon, 07 Jul 2014 15:06:00 -0000 From: Joel Brobecker To: Simon Marchi Cc: GDB Patches Subject: Re: [PATCH 1/2] Add dprintf and detach test (PR breakpoints/17012) Message-ID: <20140707150614.GG6038@adacore.com> References: <1403101571-1190-1-git-send-email-simon.marchi@ericsson.com> <53B40946.3080102@ericsson.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <53B40946.3080102@ericsson.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SW-Source: 2014-07/txt/msg00116.txt.bz2 Hello Simon, > 2014-06-18 Simon Marchi simon.marchi@ericsson.com > > PR breakpoints/17012 > gdb.base/dprintf-detach.c: New file. > gdb.base/dprintf-detach.exp: New file. Sorry for the delay in answering this. > diff --git a/gdb/testsuite/gdb.base/dprintf-detach.c b/gdb/testsuite/gdb.base/dprintf-detach.c > new file mode 100644 > index 0000000..91f49ce > --- /dev/null > +++ b/gdb/testsuite/gdb.base/dprintf-detach.c > @@ -0,0 +1,18 @@ > +#include This file needs a copyright notice, please. > diff --git a/gdb/testsuite/gdb.base/dprintf-detach.exp b/gdb/testsuite/gdb.base/dprintf-detach.exp > new file mode 100644 > index 0000000..18ba154 > --- /dev/null > +++ b/gdb/testsuite/gdb.base/dprintf-detach.exp > @@ -0,0 +1,80 @@ > +# Copyright 2003-2014 Free Software Foundation, Inc. Can you confirm that 2003 is the correct year for the start of the range? > + > +# This program is free software; you can redistribute it and/or modify > +# it under the terms of the GNU General Public License as published by > +# the Free Software Foundation; either version 3 of the License, or > +# (at your option) any later version. > +# > +# This program is distributed in the hope that it will be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program. If not, see . */ > + > +# This test checks that inserting a dprintf and detaching does not crash > +# the program. > +# > +# Related bug: https://sourceware.org/bugzilla/show_bug.cgi?id=17012 > + > +# Only GNU/Linux is known to support (dprintf and detach). > +if { ! [istarget "*-*-linux*"] } { > + return 0 > +} > + > +# Are we on a target board? > +if [is_remote target] then { > + return 0 > +} > + > +standard_testfile > +set escapedbinfile [string_to_regexp ${binfile}] > + > +if [prepare_for_testing "failed to prepare for dprintf-detach" \ > + ${testfile} ${srcfile} {debug}] { > + return -1 > +} > + > +# The problem was showing up in non-stop mode, since it enables > +# "breakpoint always-inserted", so this could also be > +# "set breakpoint always-inserted on". > +gdb_test_no_output "set non-stop on" > + > +if ![runto_main] { > + fail "Can't run to main" > + return -1 > +} > + > +# Get PID of test program. > +set inferior_pid -1 > +set test "get inferior process ID" > +gdb_test_multiple "call getpid ()" $test { > + -re ".* = ($decimal).*$gdb_prompt $" { > + set inferior_pid $expect_out(1,string) > + pass $test > + } > +} > + > +# Add a dprintf and detach. > +gdb_test "dprintf function, \"hello\"" "Dprintf .*" "dprintf insertion" > +gdb_test "detach" "Detaching from program: .*$escapedbinfile, .*" "detach program" > + > +# Exit gdb. Until we do that, the process will exist as a zombie. Two spaces after the period. > +gdb_exit > + > +# Give some time for the ex-inferior to run and hopefully not crash. > +sleep 1 > + > +# Check that the process still exists. > +set test "detached process should continue to exist" > +if {[catch {exec kill -0 $inferior_pid}]} { > + # Process does not exist. > + fail "$test" > +} else { > + # Process exists. > + pass "$test" > +} > + > +# Clean up. > +catch {exec kill -9 $inferior_pid} I am not quite sure about how well how the above would work in practice. How about restarting GDB, and do an "attach" gdb_test? That way, we can kill the inferior process from GDB as well. (it's a good thing you used a 30-times loops as well to make sure the process eventually terminates on its own as well). -- Joel