Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Joel Brobecker <brobecker@gnat.com>
To: gdb-patches@sources.redhat.com
Subject: [RFA/testsuite] attach.exp: Add small delay in busy loop...
Date: Tue, 18 Nov 2003 23:00:00 -0000	[thread overview]
Message-ID: <20031118230002.GG1319@gnat.com> (raw)

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

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  <brobecker@gnat.com>

        * gdb.base/attach.c: Add small delay in busy loop.
        * gdb.base/attach.exp: Make some associated adjustments.

OK to apply?

Thanks,
-- 
Joel

[-- Attachment #2: attach.diff --]
[-- Type: text/plain, Size: 3486 bytes --]

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 <stdio.h>
+#include <time.h>
 
 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"}

             reply	other threads:[~2003-11-18 23:00 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-11-18 23:00 Joel Brobecker [this message]
2003-11-19  0:26 ` Michael Snyder
2003-11-19  0:29   ` Daniel Jacobowitz
2003-11-19 19:16     ` Michael Snyder
2003-11-19 19:17       ` Daniel Jacobowitz
2003-11-20  6:25   ` Joel Brobecker
2003-11-20 20:20     ` Michael Snyder

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20031118230002.GG1319@gnat.com \
    --to=brobecker@gnat.com \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox