Tests that use a secondary MI channel (i.e., either tests that call
mi_gdb_start with separate-mi-tty, or all tests when
FORCE_SEPARATE_MI_TTY=1 is specified on the make check command line),
don't close GDB correctly.
E.g., if you run gdb.mi/mi-exec-run.exp in a loop:
  while true; do make check TESTS="gdb.mi/mi-exec-run.exp"; done
you can see more than one gdb running at the same time:
  $ ps -ef | grep -v grep | grep "gdb/gdb"
  pedro      40507       1  7 15:47 ?        00:00:00 /home/pedro/gdb/build/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/pedro/gdb/build/gdb/testsuite/../data-directory
  pedro      40562       1  0 15:47 ?        00:00:00 /home/pedro/gdb/build/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/pedro/gdb/build/gdb/testsuite/../data-directory
  pedro      40727       1  0 15:47 ?        00:00:00 /home/pedro/gdb/build/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/pedro/gdb/build/gdb/testsuite/../data-directory
  pedro      40786       1  0 15:47 ?        00:00:00 /home/pedro/gdb/build/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/pedro/gdb/build/gdb/testsuite/../data-directory
This commit fixes it.
gdb/testsuite/ChangeLog:
	* lib/mi-support.exp (mi_uncatched_gdb_exit) Switch to the main
	spawn_id before calling remote_close.  Close secondary MI channel.
+2020-09-20  Pedro Alves  <pedro@palves.net>
+
+       * lib/mi-support.exp (mi_uncatched_gdb_exit) Switch to the main
+       spawn_id before calling remote_close.  Close secondary MI channel.
+
 2020-09-20  Pedro Alves  <pedro@palves.net>
 
        * gdb.base/testenv.exp (find_env): Bail out if printing 'envp[$i]'
 
        }
     }
 
+    # Switch back to the main spawn id, so that remote_close below
+    # closes it, and not a secondary channel.  Closing a secondary
+    # channel does not make GDB exit.
+    if {$gdb_spawn_id != $gdb_main_spawn_id} {
+       switch_gdb_spawn_id $gdb_main_spawn_id
+    }
+
+    # Close secondary MI channel, if there's one.
+    if {$mi_spawn_id != $gdb_main_spawn_id} {
+       close -i $mi_spawn_id
+    }
+
     if ![is_remote host] {
        remote_close host
     }