From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 36652 invoked by alias); 23 Oct 2017 14:28:25 -0000 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 Received: (qmail 36622 invoked by uid 89); 23 Oct 2017 14:28:24 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=deeper X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 23 Oct 2017 14:28:23 +0000 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B5EBF13AAE for ; Mon, 23 Oct 2017 14:18:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B5EBF13AAE Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=palves@redhat.com Received: from cascais.lan (ovpn04.gateway.prod.ext.ams2.redhat.com [10.39.146.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3964A7A1E2 for ; Mon, 23 Oct 2017 14:18:33 +0000 (UTC) From: Pedro Alves To: gdb-patches@sourceware.org Subject: [PATCH 6/6] Drop /proc/PID/status polling from gdb.threads/attach-into-signal.exp Date: Mon, 23 Oct 2017 14:28:00 -0000 Message-Id: <1508768307-11531-7-git-send-email-palves@redhat.com> In-Reply-To: <1508768307-11531-1-git-send-email-palves@redhat.com> References: <1508768307-11531-1-git-send-email-palves@redhat.com> X-SW-Source: 2017-10/txt/msg00722.txt.bz2 I noticed that the 'with_test_prefix "stoppedtry $stoppedtry"' prefix in this testcase is unnecessary, because inside that block there are no pass/fail calls. In fact the block includes a comment saying: # No PASS message as we may be looping in multiple # attempts. but looking deeper at this I noticed a few odd things with this code block: 1. This code is assuming that the second line in the /proc/PID/status files is the "State:" line, which may have been true when this was originally written, but is not true on my machine at least (Linux 4.8.13). $ cat /proc/self/status Name: cat Umask: 0002 State: R (running) So nowadays, that 'string match "*(stopped)*"' is running against the "Umask:" line and thus always returns false, meaning the loop always breaks on $stoppedtry == 0. 2. The loop seems to be waiting for the process to become "(stopped)", but if so then that 'if {![string match]}' check is reversed, it should be checking 'if {[string match]}' instead, because "string match" returns true if the string matches, not 0. 3. But if we fixed all that, we'd still run into the simple fact that nothing is actually stopping the test's inferior process before GDB attaches... The top of the testcase says: # This test was created by modifying attach-stopped.exp. ... and attach-stopped.exp does have: # Stop the program remote_exec build "kill -s STOP ${testpid}" but then attach-stopped.exp doesn't have an equivalent /proc/PID/status poll loop... (Maybe it could.) So remove this whole loop as useless. gdb/testsuite/ChangeLog: yyyy-mm-dd Pedro Alves * gdb.threads/attach-into-signal.exp: Remove whole "stoppedtry" loop. --- gdb/testsuite/gdb.threads/attach-into-signal.exp | 26 ------------------------ 1 file changed, 26 deletions(-) diff --git a/gdb/testsuite/gdb.threads/attach-into-signal.exp b/gdb/testsuite/gdb.threads/attach-into-signal.exp index 7502479..e0ea213 100644 --- a/gdb/testsuite/gdb.threads/attach-into-signal.exp +++ b/gdb/testsuite/gdb.threads/attach-into-signal.exp @@ -56,32 +56,6 @@ proc corefunc { threadtype executable } { set attempt 1 set passes 1 while { $passes < 3 && $attempt <= $attempts } { - set stoppedtry 0 - while { $stoppedtry < 10 } { - with_test_prefix "stoppedtry $stoppedtry" { - if [catch {open /proc/${testpid}/status r} fileid] { - set stoppedtry 10 - break - } - gets $fileid line1 - gets $fileid line2 - close $fileid - - if {![string match "*(stopped)*" $line2]} { - # No PASS message as we may be looping in multiple - # attempts. - break - } - sleep 1 - set stoppedtry [expr $stoppedtry + 1] - } - } - if { $stoppedtry >= 10 } { - verbose -log $line2 - set test "process is still running on the attempt # $attempt of $attempts" - break - } - # Main test: set test "attach (pass $passes), pending signal catch" if {[gdb_test_multiple "attach $testpid" $test { -- 2.5.5