Handle SIGSEGV in gdb selftests
authorTom Tromey <tromey@adacore.com>
Thu, 15 Dec 2022 21:12:05 +0000 (14:12 -0700)
committerTom Tromey <tom@tromey.com>
Tue, 27 Dec 2022 17:21:59 +0000 (10:21 -0700)
The gdb.gdb self-tests were timing out for me, which turned out to be
PR testsuite/29325.  Looking into it, the problem is that the version
of the Boehm GC that is used by Guile on my machine causes a SEGV
during stack probing.  This unexpected stop confuses the tests and
causes repeated timeouts.

This patch adapts the two failing tests.  This makes them work for me,
and reduces the running time of gdb.gdb from 20 minutes to about 11
seconds.

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

gdb/testsuite/gdb.gdb/python-helper.exp
gdb/testsuite/gdb.gdb/selftest.exp

index 3585ac9f0bf0f5e1b8d724d976f773897d7a52d4..fc52929489ea39b515e5f0737d0365d07f5c1ebc 100644 (file)
@@ -93,6 +93,12 @@ proc test_python_helper {} {
     # here.
     gdb_test_multiple "continue" "start inner gdb" {
        -i "$inferior_spawn_id"
+       -re "received signal SIGSEGV.* in GC_.*$outer_prompt_re" {
+           # Some versions of the GC used by Guile cause a SEGV
+           # during stack probing.  Ignore this and carry on.
+           send_gdb "continue\n"
+           exp_continue
+       }
        -re "\r\n$gdb_prompt $" {
            pass $gdb_test_name
        }
index ca1e7cffb4e4e1bcf913f7bd77eb6d45355f5376..e2b9247f65d3e8bdf9b54615cc1288ab9b792e23 100644 (file)
@@ -75,6 +75,12 @@ proc test_with_self { } {
        set test "xgdb is at prompt"
        gdb_test_multiple "continue" $test {
            -i "$inferior_spawn_id"
+           -re "received signal SIGSEGV.* in GC_.*$gdb_prompt" {
+               # Some versions of the GC used by Guile cause a SEGV
+               # during stack probing.  Ignore this and carry on.
+               send_gdb "continue\n"
+               exp_continue
+           }
            -re "$banner" {
                pass $test
            }