[gdb/testsuite] Log wait status on process no longer exists error
authorTom de Vries <tdevries@suse.de>
Wed, 24 Oct 2018 10:54:33 +0000 (12:54 +0200)
committerTom de Vries <tdevries@suse.de>
Wed, 24 Oct 2018 14:22:58 +0000 (16:22 +0200)
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  <tdevries@suse.de>

* lib/gdb.exp (gdb_test_multiple): Log wait status on process no
longer exists error.

gdb/testsuite/ChangeLog
gdb/testsuite/lib/gdb.exp

index bfcea6132fe762e784604ab59f82672a77a3e675..c91c0f2612aae298cb10caab89655887f9263251 100644 (file)
@@ -1,3 +1,8 @@
+2018-10-24  Tom de Vries  <tdevries@suse.de>
+
+       * lib/gdb.exp (gdb_test_multiple): Log wait status on process no
+       longer exists error.
+
 2018-10-24  Tom de Vries  <tdevries@suse.de>
 
        * gdb.base/catch-follow-exec.exp: Rewrite using gdb_test.
index 2d197d9b5c8a05bd7832ace35f24ec75eb1d2fa7..b4cf80e38a0a8152f20de5d25ed81822b1ba8ffc 100644 (file)
@@ -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 {