public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] [gdb/testsuite] Fix host board local-remote-host-notty.exp timeouts
@ 2022-10-14 17:59 Tom de Vries
  0 siblings, 0 replies; only message in thread
From: Tom de Vries @ 2022-10-14 17:59 UTC (permalink / raw)
  To: gdb-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c4c8c27263d2dd25647314f4897bd01ad1a78847

commit c4c8c27263d2dd25647314f4897bd01ad1a78847
Author: Tom de Vries <tdevries@suse.de>
Date:   Fri Oct 14 19:59:26 2022 +0200

    [gdb/testsuite] Fix host board local-remote-host-notty.exp timeouts
    
    With test-case gdb.server/stop-reply-no-thread-multi.exp and host board
    local-remote-host-notty.exp we occasionally run into a silent out, due to
    getting:
    ...
    (gdb) kill^M
    (gdb) The program is not being run.^M
    ...
    instead of the expected:
    ...
    (gdb) kill^M
    The program is not being run.^M
    (gdb)
    ...
    
    Likewise, we occasionally run into a nonsilent timeout:
    ...
    (gdb) disconnect^M
    (gdb) You can't do that when your target is `exec'^M
    FAIL: gdb.server/stop-reply-no-thread.exp: to_disable=Tthread: t_nonstop=on: \
      disconnect (timeout)
    ...
    
    Typically, this results in the test-case taking more than two minutes to run.
    
    The problem can be reproduced using just:
    ...
    $ ssh -l $USER 127.0.0.1 gdb -q -ex kill
    ...
    
    Note that ssh by default uses -T which disables pseudo-tty allocation (as
    opposed to -t which forces pseudo-tty allocation):
    ...
    $ ssh -l $USER 127.0.0.1 -T tty
    not a tty
    $ ssh -l $USER 127.0.0.1 -t tty
    /dev/pts/5
    Connection to 127.0.0.1 closed.
    ...
    and according to https://stackoverflow.com/a/63241102 the behaviour we're
    seeing is specific to using '-T'.
    
    The related host board local-remote-host.exp does use '-t', and the only
    difference between the two boards mentioned is whether editing is on or off.
    
    Fix this by:
    - moving the content of local-remote-host-notty.exp into
      local-remote-host.exp
    - consequently, extending the copyright years in local-remote-host.exp
    - including local-remote-host.exp in local-remote-host-notty.exp
      (making local-remote-host-notty.exp use '-t')
    - adding -iex "set editing off" to GDBFLAGS in local-remote-host-notty.exp
    
    This results in the test-case taking just 6 seconds to run.
    
    Tested on x86_64-linux.
    
    Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29669

Diff:
---
 gdb/testsuite/boards/local-remote-host-notty.exp | 34 +++-----------------
 gdb/testsuite/boards/local-remote-host.exp       | 41 ++++++++++++++++++++++--
 2 files changed, 43 insertions(+), 32 deletions(-)

diff --git a/gdb/testsuite/boards/local-remote-host-notty.exp b/gdb/testsuite/boards/local-remote-host-notty.exp
index b858122afe0..88a431ca775 100644
--- a/gdb/testsuite/boards/local-remote-host-notty.exp
+++ b/gdb/testsuite/boards/local-remote-host-notty.exp
@@ -18,36 +18,10 @@
 #
 # To use this file:
 # bash$ cd ${build_dir}/gdb
-# bash$ make check RUNTESTFLAGS="--host_board=local-remote-host"
+# bash$ make check RUNTESTFLAGS="--host_board=local-remote-host-notty"
 
-global GDB
-set GDB [file join [pwd] "../gdb"]
+# Like local-remote-host, but with readline/editing disabled.
 
-set_board_info hostname 127.0.0.1
+load_board_description "local-remote-host"
 
-set_board_info username $env(USER)
-
-# The ssh key should be correctly set up that you ssh to 127.0.0.1
-# without having to type password.
-set_board_info rsh_prog /usr/bin/ssh
-set_board_info rcp_prog /usr/bin/scp
-set_board_info file_transfer "rsh"
-
-proc ${board}_file { dest op args } {
-    if { $op == "delete" } {
-	return 0
-    }
-    return [eval [list standard_file $dest $op] $args]
-}
-
-proc ${board}_download { board src dest } {
-
-    # If file name is a relative, convert it to absolute, otherwise file can't
-    # be found on host, because the current directory usually is /home/$USER.
-    # This also bypasses the real download to the host.
-    if { [file pathtype $src] == "relative" } {
-	return [file join [pwd] $src]
-    } else {
-	return $src
-    }
-}
+set GDBFLAGS "${GDBFLAGS} -iex \"set editing off\""
diff --git a/gdb/testsuite/boards/local-remote-host.exp b/gdb/testsuite/boards/local-remote-host.exp
index 8d69a568f23..fc87dd48014 100644
--- a/gdb/testsuite/boards/local-remote-host.exp
+++ b/gdb/testsuite/boards/local-remote-host.exp
@@ -1,4 +1,4 @@
-# Copyright 2014-2022 Free Software Foundation, Inc.
+# Copyright 2012-2022 Free Software Foundation, Inc.
 
 # 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
@@ -13,9 +13,46 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+# This file is a dejagnu "board file" and is used to run the testsuite
+# against local host, in remote host mode.
+#
+# To use this file:
+# bash$ cd ${build_dir}/gdb
+# bash$ make check RUNTESTFLAGS="--host_board=local-remote-host"
+
 # Like local-remote-host-notty, but with readline/editing enabled.
 
-load_board_description "local-remote-host-notty"
+global GDB
+set GDB [file join [pwd] "../gdb"]
+
+set_board_info hostname 127.0.0.1
+
+set_board_info username $env(USER)
+
+# The ssh key should be correctly set up that you ssh to 127.0.0.1
+# without having to type password.
+set_board_info rsh_prog /usr/bin/ssh
+set_board_info rcp_prog /usr/bin/scp
+set_board_info file_transfer "rsh"
+
+proc ${board}_file { dest op args } {
+    if { $op == "delete" } {
+	return 0
+    }
+    return [eval [list standard_file $dest $op] $args]
+}
+
+proc ${board}_download { board src dest } {
+
+    # If file name is a relative, convert it to absolute, otherwise file can't
+    # be found on host, because the current directory usually is /home/$USER.
+    # This also bypasses the real download to the host.
+    if { [file pathtype $src] == "relative" } {
+	return [file join [pwd] $src]
+    } else {
+	return $src
+    }
+}
 
 # Like standard_spawn, but force pseudo-tty allocation, with 'ssh -t'.

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-10-14 17:59 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-14 17:59 [binutils-gdb] [gdb/testsuite] Fix host board local-remote-host-notty.exp timeouts Tom de Vries

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).