aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2022-12-15 14:12:05 -0700
committerTom Tromey <tom@tromey.com>2022-12-27 10:21:59 -0700
commit59132fd9777442eea8c05c6b4b96cee03c6273b3 (patch)
treeab028164073f1b5c9ed014e916963b542e9fae30
parentb19d96d13942eb1ba28f550da872d2a30c7a9229 (diff)
downloadbinutils-59132fd9777442eea8c05c6b4b96cee03c6273b3.zip
binutils-59132fd9777442eea8c05c6b4b96cee03c6273b3.tar.gz
binutils-59132fd9777442eea8c05c6b4b96cee03c6273b3.tar.bz2
Handle SIGSEGV in gdb selftests
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
-rw-r--r--gdb/testsuite/gdb.gdb/python-helper.exp6
-rw-r--r--gdb/testsuite/gdb.gdb/selftest.exp6
2 files changed, 12 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.gdb/python-helper.exp b/gdb/testsuite/gdb.gdb/python-helper.exp
index 3585ac9..fc52929 100644
--- a/gdb/testsuite/gdb.gdb/python-helper.exp
+++ b/gdb/testsuite/gdb.gdb/python-helper.exp
@@ -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
}
diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp
index ca1e7cf..e2b9247 100644
--- a/gdb/testsuite/gdb.gdb/selftest.exp
+++ b/gdb/testsuite/gdb.gdb/selftest.exp
@@ -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
}