From: Pedro Alves <palves@redhat.com>
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 [thread overview]
Message-ID: <1508768307-11531-7-git-send-email-palves@redhat.com> (raw)
In-Reply-To: <1508768307-11531-1-git-send-email-palves@redhat.com>
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 <palves@redhat.com>
* 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
next prev parent reply other threads:[~2017-10-23 14:28 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-23 14:18 [PATCH 0/6] Fix several cases of unstable test names Pedro Alves
2017-10-23 14:18 ` [PATCH 2/6] Fix unstable test names in gdb.base/startup-with-shell.exp Pedro Alves
2017-10-23 16:24 ` Yao Qi
2017-10-24 9:58 ` Pedro Alves
2017-10-23 14:18 ` [PATCH 5/6] Fix unstable test names in gdb.threads/attach-into-signal.exp Pedro Alves
2017-10-23 14:18 ` [PATCH 3/6] Fix unstable test names in gdb.gdb/unittest.exp Pedro Alves
2017-10-23 14:18 ` [PATCH 4/6] Fix unstable test names in gdb.python/py-objfile.exp Pedro Alves
2017-10-23 14:18 ` [PATCH 1/6] Fix unstable test names in gdb.arch/arc-tdesc-cpu.exp Pedro Alves
2017-10-23 14:28 ` Pedro Alves [this message]
2017-10-24 7:27 ` [PATCH 6/6] Drop /proc/PID/status polling from gdb.threads/attach-into-signal.exp Yao Qi
2017-10-24 10:00 ` [pushed] Reindent gdb.threads/attach-into-signal.exp (Re: [PATCH 6/6] Drop /proc/PID/status polling from gdb.threads/attach-into-signal.exp) Pedro Alves
2017-10-24 10:09 ` [PATCH 7/6] More gdb.threads/attach-into-signal.exp stale stopped bits " Pedro Alves
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=1508768307-11531-7-git-send-email-palves@redhat.com \
--to=palves@redhat.com \
--cc=gdb-patches@sourceware.org \
/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