gdb/testsuite: Avoid infinite loop in gdb.reverse/step-reverse.exp
authorThiago Jung Bauermann <thiago.bauermann@linaro.org>
Wed, 31 May 2023 19:46:29 +0000 (21:46 +0200)
committerThiago Jung Bauermann <thiago.bauermann@linaro.org>
Fri, 23 Jun 2023 21:05:02 +0000 (23:05 +0200)
commit7b81dececfe5dd6e2891eda90c6daa02dced6c0e
tree481c7322c3076a4b057c3b5ab2b50036adaf82a5
parent5a97377e55134b585a4f92569e9b6bf958af8daf
gdb/testsuite: Avoid infinite loop in gdb.reverse/step-reverse.exp

This testcase sometimes gets stuck in a loop for hours when running in our
CI.  The problem is that due to an issue unrelated to reverse debugging the
inferior exits early, and because of the overly generic ".*" pattern the
testcase keeps sending the "next" command without noticing that the
inferior is gone.

gdb_test_multiple has a pattern to detect that "The program is not being
run.", but since it is placed after the patterns from the caller it won't
be triggered.  It also has a timeout pattern but because it is triggered
between successful matches, each time the test matches the '-re -wrap ".*"'
this counts as a successful match and the timeout is reset.

Since the test binary is compiled with debug information, fix by changing
one of the generic patterns to match entering the main function and the
other one to match the source code line number that is shown by GDB right
after the "step" command.

Also, as a precaution add a maximum number of times the "next" command will
be sent.

Co-Authored-By: Tom de Vries <tdevries@suse.de>
Reviewed-By: Bruno Larsen <blarsen@redhat.com>
Approved-By: Tom de Vries <tdevries@suse.de>
gdb/testsuite/gdb.reverse/step-reverse.exp