From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13171 invoked by alias); 13 Apr 2011 09:20:47 -0000 Received: (qmail 13157 invoked by uid 22791); 13 Apr 2011 09:20:45 -0000 X-SWARE-Spam-Status: No, hits=-6.4 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 13 Apr 2011 09:20:33 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p3D9KXcW004898 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 13 Apr 2011 05:20:33 -0400 Received: from host1.jankratochvil.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p3D9KU7I020764 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 13 Apr 2011 05:20:32 -0400 Received: from host1.jankratochvil.net (localhost [127.0.0.1]) by host1.jankratochvil.net (8.14.4/8.14.4) with ESMTP id p3D9KUMK022631; Wed, 13 Apr 2011 11:20:30 +0200 Received: (from jkratoch@localhost) by host1.jankratochvil.net (8.14.4/8.14.4/Submit) id p3D9KUXH022630; Wed, 13 Apr 2011 11:20:30 +0200 Date: Wed, 13 Apr 2011 09:20:00 -0000 From: Jan Kratochvil To: Marek Polacek Cc: gdb-patches@sourceware.org Subject: Re: [PATCH] gdb.base/commands.exp: fix racy test (PR testsuite/12649) Message-ID: <20110413092029.GA19366@host1.jankratochvil.net> References: <4DA55797.5090800@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4DA55797.5090800@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes 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 X-SW-Source: 2011-04/txt/msg00181.txt.bz2 Hi Marek, On Wed, 13 Apr 2011 09:58:15 +0200, Marek Polacek wrote: > The problem is with the ".*" part which just slurps everything, in normal case, while with the following reproducer it does not slurp everything which then falsely matches proc gdb_test_multiple { command message user_code } { -re "\\((y or n|y or \\\[n\\\]|\\\[y\\\] or n)\\) " { fail "$message (got interactive prompt)" > when we use preloaded read() which returns just one char at a time. The problem reproducer in PR testsuite/12649 has no been mentioned here. > --- a/gdb/testsuite/ChangeLog > +++ b/gdb/testsuite/ChangeLog > @@ -1,3 +1,7 @@ > +2011-04-13 Marek Polacek ^^^ two spaces here The ChangeLog entry should be posted as plain text before the final commit, for example now it already no longer applies to FSF GDB HEAD now. > + * gdb.base/commands.exp (redefine_backtrace_test): Fix race. The description should be more detailed. For example you do not mention you have created a new testcase `expect response to define backtrace'. > --- a/gdb/testsuite/gdb.base/commands.exp > +++ b/gdb/testsuite/gdb.base/commands.exp > @@ -704,18 +704,22 @@ proc redefine_backtrace_test {} { > global gdb_prompt > > gdb_test_multiple "define backtrace" "define backtrace" { > - -re "Really redefine built-in.*$" { > + -re "Really redefine built-in command \"backtrace\"\\? \\(y or n\\) $" { > send_gdb "y\n" Optional FYI: This send_gdb could be moved below into gdb_test_multiple: gdb_test_multiple "y" "expect response to define backtrace" { But please do a PASS call here for better troubleshooting in the future: pass "define backtrace" > - exp_continue > } > + } > > - -re "End with" { > + # We send nothing this time. > + gdb_test_multiple "" "expect response to define backtrace" { > + -re "End with a line saying just \"end\".\r\n>$" { nitpick - `.' is a metacharacter here, it could be escaped: -re "End with a line saying just \"end\"\\.\r\n>$" { > pass "define backtrace in redefine_backtrace_test" This test has name "expect response to define backtrace" which gets used during various default FAIL cases by gdb_test_multiple. The PASS name should match the possible FAIL name, therefore rather some: pass "expect response to define backtrace" > } > - default { > + > + default { > fail "(timeout or eof) define backtrace in redefine_backtrace_test" > } This is redundant for gdb_test_multiple now but it is in fact unrelated change. I would prefer one re-post before the approval. Thanks, Jan