From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5027 invoked by alias); 19 Nov 2003 00:26:20 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 5013 invoked from network); 19 Nov 2003 00:26:14 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 19 Nov 2003 00:26:14 -0000 Received: from int-mx2.corp.redhat.com (nat-pool-rdu-dmz.redhat.com [172.16.52.200] (may be forged)) by mx1.redhat.com (8.11.6/8.11.6) with ESMTP id hAJ0QCH11127 for ; Tue, 18 Nov 2003 19:26:12 -0500 Received: from potter.sfbay.redhat.com (potter.sfbay.redhat.com [172.16.27.15]) by int-mx2.corp.redhat.com (8.11.6/8.11.6) with ESMTP id hAJ0Q8a16304; Tue, 18 Nov 2003 19:26:08 -0500 Received: from redhat.com (reddwarf.sfbay.redhat.com [172.16.24.50]) by potter.sfbay.redhat.com (8.11.6/8.11.6) with ESMTP id hAJ0Q7H10623; Tue, 18 Nov 2003 16:26:08 -0800 Message-ID: <3FBAB89F.3020805@redhat.com> Date: Wed, 19 Nov 2003 00:26:00 -0000 From: Michael Snyder Organization: Red Hat, Inc. User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Joel Brobecker CC: gdb-patches@sources.redhat.com Subject: Re: [RFA/testsuite] attach.exp: Add small delay in busy loop... References: <20031118230002.GG1319@gnat.com> In-Reply-To: <20031118230002.GG1319@gnat.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2003-11/txt/msg00386.txt.bz2 Joel Brobecker wrote: > Hello, > > The attach.exp sometimes fails on certain platforms (eg mips-irix), > and causes an attach process to be left behind. Since it is doing a busy > loop, this runaway process left behind consumes 99.9% of the CPU, > and considerably slows down the execution of the rest of the testsuite. > > I suggest the following change to add a small delay at each iteration > of the busy loop. I had to make some adjustments to attach.exp: > > a. Line number 19 became line 32. > Just like Elena recently upgraded a test to avoid hard-coded > line number, we should probably clean this up, someday. This can > be a separate patch, however. > > b. The program was attached to while inside the busy loop, so the > test was expecting the debugger to report that the inferior was > inside function main() after the attach command was performed. > This is no longer the case, since the inferior is most likely > inside a system call, doing the delay. I felt that it was not > a necessity to checke where the debugger thought the inferior > was stopped, so removed that part of the expected output. What > I can do is add an extra test that does a backtrace and verifies > that it contains a frame for function main(). > > 2003-11-18 J. Brobecker > > * gdb.base/attach.c: Add small delay in busy loop. > * gdb.base/attach.exp: Make some associated adjustments. > > OK to apply? Seems to work on Linux. I'd sure like to see that backtrace test, though, to confirm that we are able to build a meaningful machine state after we attach. Michael > ------------------------------------------------------------------------ > > Index: attach.c > =================================================================== > RCS file: /cvs/src/src/gdb/testsuite/gdb.base/attach.c,v > retrieving revision 1.1.1.1 > diff -u -p -r1.1.1.1 attach.c > --- attach.c 28 Jun 1999 23:02:40 -0000 1.1.1.1 > +++ attach.c 18 Nov 2003 22:51:12 -0000 > @@ -5,15 +5,28 @@ > exit unless/until gdb sets the variable to non-zero.) > */ > #include > +#include > > int should_exit = 0; > > +/* Wait for 0.1 sec. */ > + > +void > +small_delay () > +{ > + const struct timespec ts = { 0, 1000000 }; /* 0.1 sec */ > + nanosleep (&ts, NULL); > +} > + > int main () > { > int local_i = 0; > > while (! should_exit) > { > + /* Insert a small delay in order to avoid consuming all the CPU > + while waiting for the debugger to take control. */ > + small_delay (); > local_i++; > } > return 0; > Index: attach.exp > =================================================================== > RCS file: /cvs/src/src/gdb/testsuite/gdb.base/attach.exp,v > retrieving revision 1.12 > diff -u -p -r1.12 attach.exp > --- attach.exp 7 Aug 2003 17:55:41 -0000 1.12 > +++ attach.exp 18 Nov 2003 22:51:13 -0000 > @@ -173,7 +173,7 @@ proc do_attach_tests {} { > > send_gdb "attach $testpid\n" > gdb_expect { > - -re "Attaching to program.*`?$escapedbinfile'?, process $testpid.*main.*at .*$srcfile:.*$gdb_prompt $"\ > + -re "Attaching to program.*`?$escapedbinfile'?, process $testpid.*$gdb_prompt $"\ > {pass "attach1, after setting file"} > -re "$gdb_prompt $" {fail "attach1, after setting file"} > timeout {fail "(timeout) attach1, after setting file"} > @@ -236,7 +236,7 @@ proc do_attach_tests {} { > # > send_gdb "attach $testpid\n" > gdb_expect { > - -re "Attaching to process $testpid.*Reading symbols from $escapedbinfile.*main.*at .*$gdb_prompt $"\ > + -re "Attaching to process $testpid.*Reading symbols from $escapedbinfile.*$gdb_prompt $"\ > {pass "attach2"} > -re "$gdb_prompt $" {fail "attach2"} > timeout {fail "(timeout) attach2"} > @@ -253,16 +253,16 @@ proc do_attach_tests {} { > > # Verify that the modification really happened. > # > - send_gdb "tbreak 19\n" > + send_gdb "tbreak 32\n" > gdb_expect { > - -re "Breakpoint .*at.*$srcfile, line 19.*$gdb_prompt $"\ > + -re "Breakpoint .*at.*$srcfile, line 32.*$gdb_prompt $"\ > {pass "after attach2, set tbreak postloop"} > -re "$gdb_prompt $" {fail "after attach2, set tbreak postloop"} > timeout {fail "(timeout) after attach2, set tbreak postloop"} > } > send_gdb "continue\n" > gdb_expect { > - -re "main.*at.*$srcfile:19.*$gdb_prompt $"\ > + -re "main.*at.*$srcfile:32.*$gdb_prompt $"\ > {pass "after attach2, reach tbreak postloop"} > -re "$gdb_prompt $" {fail "after attach2, reach tbreak postloop"} > timeout {fail "(timeout) after attach2, reach tbreak postloop"} > @@ -337,7 +337,7 @@ proc do_attach_tests {} { > > send_gdb "attach $testpid\n" > gdb_expect { > - -re "Attaching to process $testpid.*Reading symbols from $escapedbinfile.*main.*at .*$gdb_prompt $"\ > + -re "Attaching to process $testpid.*Reading symbols from $escapedbinfile.*$gdb_prompt $"\ > {pass "attach when process' a.out not in cwd"} > -re "$gdb_prompt $" {fail "attach when process' a.out not in cwd"} > timeout {fail "(timeout) attach when process' a.out not in cwd"}