[pushed] gdb/testsuite: remove spurious $ in save_vars

Message ID 20240115190910.74114-1-simon.marchi@efficios.com
State New
Headers
Series [pushed] gdb/testsuite: remove spurious $ in save_vars |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gdb_build--master-arm warning Patch is already merged
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 warning Patch is already merged

Commit Message

Simon Marchi Jan. 15, 2024, 7:09 p.m. UTC
  I noticed that running the whole testsuite in serial mode (which means
all the .exp files are ran in the same TCL environment, one after the
other) with the native-extended-gdbserver board caused some weird
failures, for instance a lot of internal errors in the reverse tests,
like:

    continue^M
    Continuing.^M
    /home/jenkins/workspace/binutils-gdb_master_linuxbuild/platform/deb12-amd64/target_board/native-extended-gdbserver/src/binutils-gdb/gdb/remot        e.c:6922: internal-error: resume: Assertion `scope_ptid == inferior_ptid' failed.^M
    A problem internal to GDB has been detected,^M
    further debugging may prove unreliable.^M
    ----- Backtrace -----^M
    FAIL: gdb.reverse/break-precsave.exp: run to end of main (GDB internal error)

This only happens after running gdb.multi/attach-while-running.exp.
That test does not restore GDBFLAGS properly when it's done, it leaves
`-ex \"maint set target-non-stop on\""` in there, which breaks some
subsequent tests.  The problem is that this line:

    save_vars { $::GDBFLAGS } {

should not use a `$` before the variable name.  Passes the content of
`::GDBFLAGS` to save_vars, which is not what we want.  We want to pass
the `::GDBFLAGS` string.  Fix that.

Change-Id: I5ad32c527795fd10d0d94020e4fd15cebaca3a77
---
 gdb/testsuite/gdb.multi/attach-while-running.exp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


base-commit: a73afeff18db7304495bf7c42b25f3b93645b46f
  

Comments

Simon Marchi Jan. 15, 2024, 7:14 p.m. UTC | #1
On 1/15/24 14:09, Simon Marchi wrote:
> I noticed that running the whole testsuite in serial mode (which means
> all the .exp files are ran in the same TCL environment, one after the
> other) with the native-extended-gdbserver board caused some weird
> failures, for instance a lot of internal errors in the reverse tests,
> like:
> 
>     continue^M
>     Continuing.^M
>     /home/jenkins/workspace/binutils-gdb_master_linuxbuild/platform/deb12-amd64/target_board/native-extended-gdbserver/src/binutils-gdb/gdb/remot        e.c:6922: internal-error: resume: Assertion `scope_ptid == inferior_ptid' failed.^M
>     A problem internal to GDB has been detected,^M
>     further debugging may prove unreliable.^M
>     ----- Backtrace -----^M
>     FAIL: gdb.reverse/break-precsave.exp: run to end of main (GDB internal error)

Since hitting an internal error is always a GDB bug, I filed this bug
here (although I don't plan to work on it).

https://sourceware.org/bugzilla/show_bug.cgi?id=31246

Simon
  

Patch

diff --git a/gdb/testsuite/gdb.multi/attach-while-running.exp b/gdb/testsuite/gdb.multi/attach-while-running.exp
index c0201418de65..eade8b42a18e 100644
--- a/gdb/testsuite/gdb.multi/attach-while-running.exp
+++ b/gdb/testsuite/gdb.multi/attach-while-running.exp
@@ -43,7 +43,7 @@  if { [build_executable "failed to prepare" ${testfile} ${srcfile}] } {
 }
 
 proc do_test {} {
-    save_vars { $::GDBFLAGS } {
+    save_vars { ::GDBFLAGS } {
 	append ::GDBFLAGS " -ex \"maint set target-non-stop on\""
 	clean_restart $::binfile
     }