Fix gdb.base/interrupt.exp racy fail against gdbserver
authorPedro Alves <palves@redhat.com>
Thu, 23 Apr 2015 14:48:27 +0000 (15:48 +0100)
committerPedro Alves <palves@redhat.com>
Thu, 23 Apr 2015 14:48:27 +0000 (15:48 +0100)
commit4ef9fb2f075daec3885c63aa2056075bdd94384b
treec56fe0ea2c077ef860e0ee32cfcec784c8827342
parent0a8031692eac62e2b3d74789d56cdfb38a5f91b0
Fix gdb.base/interrupt.exp racy fail against gdbserver

Currently, against gdbserver, interrupt.exp occasionaly fails like
this:

 ERROR: Process no longer exists
 UNRESOLVED: gdb.base/interrupt.exp: send end of file

The problem is that we see gdbserver exiting before we match gdb's
output:

 expect: does "\r\n\r\nChild exited with status 0\r\nGDBserver exiting\r\n" (spawn_id exp8) match regular expression "end of file"? Gate "end of file"? gate=no
 expect: read eof
 expect: set expect_out(spawn_id) "exp8"
 expect: set expect_out(buffer) "\r\n\r\nChild exited with status 0\r\nGDBserver exiting\r\n"

Fix this by removing $inferior_spawn_id from the set of spawn ids
expect is watching as soon as we see the "end of file" string out of
the inferior spawn id, using an indirect spawn id list.

Tested on x86-64 Fedora 20, native and gdbserver (both target remote
and extended-remote).

gdb/testsuite/ChangeLog:
2015-04-23  Pedro Alves  <palves@redhat.com>

* gdb.base/interrupt.exp: Use an indirect spawn id list holding
$inferior_spawn_id instead of $inferior_spawn_id directly.  On
"end of file", remove $inferior_spawn_id from the indirect list.
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/interrupt.exp