From fe1a5cad302b5535030cdf62895e79512713d738 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Wed, 24 Oct 2018 12:54:33 +0200 Subject: [PATCH] [gdb/testsuite] Log wait status on process no longer exists error Proc gdb_test_multiple can run into a process no longer exists error, but when that happens it shows no details about the process: ... ERROR: Process no longer exists ... Fix this by showing the wait status of the process in the log: ... ERROR: GDB process no longer exists GDB process exited with wait status 8106 exp8 0 0 CHILDKILLED SIGSEGV \ {segmentation violation} ... In order to run the wait commmand we need an explicit pid, so we can't use any_spawn_id, and duplicate the "-i any_spawn_id eof" pattern for gdb_spawn_id, and add the wait status logging there. Build and tested on x86_64-linux. 2018-10-24 Tom de Vries * lib/gdb.exp (gdb_test_multiple): Log wait status on process no longer exists error. --- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/lib/gdb.exp | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index bfcea61..c91c0f2 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2018-10-24 Tom de Vries + * lib/gdb.exp (gdb_test_multiple): Log wait status on process no + longer exists error. + +2018-10-24 Tom de Vries + * gdb.base/catch-follow-exec.exp: Rewrite using gdb_test. 2018-10-24 Tom de Vries diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 2d197d9..b4cf80e 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -980,6 +980,17 @@ proc gdb_test_multiple { command message user_code } { set result -1 } + -i $gdb_spawn_id + eof { + perror "GDB process no longer exists" + set wait_status [wait -i $gdb_spawn_id] + verbose -log "GDB process exited with wait status $wait_status" + if { $message != "" } { + fail "$message" + } + return -1 + } + # Patterns below apply to any spawn id specified. -i $any_spawn_id eof { -- 2.7.4