From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by sourceware.org (Postfix) with ESMTPS id E3076385800A for ; Fri, 14 Oct 2022 18:00:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E3076385800A Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 1DD6A20733 for ; Fri, 14 Oct 2022 18:00:09 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 093C613451 for ; Fri, 14 Oct 2022 18:00:09 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id UQZCAamjSWOLNwAAMHmgww (envelope-from ) for ; Fri, 14 Oct 2022 18:00:09 +0000 Date: Fri, 14 Oct 2022 20:00:07 +0200 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [committed][gdb/testsuite] Fix host board local-remote-host-notty.exp timeouts Message-ID: <20221014180006.GA19542@delia.home> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Oct 2022 18:00:11 -0000 Hi, 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 Committed to trunk. Thanks, - Tom [gdb/testsuite] Fix host board local-remote-host-notty.exp timeouts --- 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 . +# 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'.