Drop /proc/PID/status polling from gdb.threads/attach-into-signal.exp
authorPedro Alves <palves@redhat.com>
Tue, 24 Oct 2017 09:43:35 +0000 (10:43 +0100)
committerPedro Alves <palves@redhat.com>
Tue, 24 Oct 2017 09:54:56 +0000 (10:54 +0100)
commit1f75a6516a4b480b5521dfb4e1a0721887ab5cdc
tree6dd8a5f6ecf49ae947e52fd0c3cf5c327c11e234
parent779990d9f0a169215b3619a8a1cd120550320793
Drop /proc/PID/status polling from gdb.threads/attach-into-signal.exp

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:
2017-10-24  Pedro Alves  <palves@redhat.com>

* gdb.threads/attach-into-signal.exp: Remove whole "stoppedtry"
loop.
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.threads/attach-into-signal.exp