[PATCH] Fix batch exit status test failure on Fedora 28

Gary Benson gbenson@redhat.com
Mon Sep 3 16:12:00 GMT 2018


Pedro Alves <palves@redhat.com> wrote:
> Yeah, if we compare with gdb.base/quit.exp, that is missing
> as well as the "remote_close host" call.  For the latter, when I last
> touched quit.exp, I remember fretting a bit about whether the remote_close
> was really necessary, but in the end decided to keep it, I don't recall
> exactly if I kept it because I found it's necessary (probably for
> remote hosts), or because it doesn't hurt.
>
> Now that I look at gdb.base/quit.exp again, I see that
> gdb.base/batch-exit-status.exp can hang forever in the same way that
> 15763a09d4ae fixed, isn't it?  Gary, any reason you didn't do the
> "eof" thing here too?

I didn't realize what it did; I thought it was something specific to
that test.  And I thought the gdb_exit at the start of the test would
clear $gdb_spawn_id but apparently not! :)  So I made a fix, basically
copied and pasted from the commit you referenced:

This commit changes the batch exit status test to detect GDB's exit
using gdb_test_multiple expecting 'eof', instead of using 'wait'.
This fixes failures reported by buildbot on Fedora 28, and also means
the testcase won't hang forever on failure as fixed in
gdb.base/quit.exp by commit 15763a09d4aea85fc3153d6746c040dd48565637.

Is this ok to commit?

Thanks,
Gary

--
gdb/testsuite/ChangeLog:

	* gdb.base/batch-exit-status.exp: Use gdb_test_multiple and expect
	'eof' before 'wait -i'.  Use remote_close and clear_gdb_spawn_id.
---
 gdb/testsuite/ChangeLog                      |  5 +++++
 gdb/testsuite/gdb.base/batch-exit-status.exp | 17 ++++++++++++-----
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/gdb/testsuite/gdb.base/batch-exit-status.exp b/gdb/testsuite/gdb.base/batch-exit-status.exp
index bee4d72..3b5de59 100644
--- a/gdb/testsuite/gdb.base/batch-exit-status.exp
+++ b/gdb/testsuite/gdb.base/batch-exit-status.exp
@@ -29,11 +29,18 @@ proc _test_exit_status {expect_status cmdline_opts} {
 	return
     }
 
-    set result [wait -i $gdb_spawn_id]
-    verbose $result
-    gdb_assert { [lindex $result 2] == 0 }
-    set actual_status [lindex $result 3]
-    gdb_assert { $actual_status == $expect_status }
+    gdb_test_multiple "" "run til exit" {
+	eof {
+	    set result [wait -i $gdb_spawn_id]
+	    verbose $result
+
+	    gdb_assert { [lindex $result 2] == 0 }
+	    gdb_assert { [lindex $result 3] == $expect_status }
+
+	    remote_close host
+	    clear_gdb_spawn_id
+	}
+    }
 }
 
 proc test_exit_status {expect_status cmdline_opts} {
-- 
1.8.3.1



More information about the Gdb-patches mailing list