]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
[gdb/testsuite] Fix timeout in gdb.tui/resize-2.exp
authorTom de Vries <tdevries@suse.de>
Mon, 3 Jun 2024 05:49:24 +0000 (07:49 +0200)
committerTom de Vries <tdevries@suse.de>
Mon, 3 Jun 2024 05:49:24 +0000 (07:49 +0200)
commit628b136d6474df9c4bbf04b8ff1977ef7191c9e1
tree539b5ecfb608e787b6760317258515488f91d151
parentad280e8ef759837dc2ba2b2bd95712290041d5d6
[gdb/testsuite] Fix timeout in gdb.tui/resize-2.exp

When running test-case gdb.tui/resize-2.exp with taskset -c 0, I sometimes run
into:
...
tui disable^[[40;1H^M(gdb) PASS: $exp: tui disable
^M^[[K(gdb) FAIL: $exp: two prompt redisplays after resize (timeout)
...

The test-case does "Term::resize 24 80 0" while having the settings of an
earlier "Term::resize 40 90", so both dimensions change.

When TUI is enabled, we call Term::resize with wait_for_msg == 1, and the proc:
- calls stty to change one dimension,
- waits for the message (enabled by "maint set tui-resize-message on")
  confirming the resize has happened,
- calls stty to change the other dimension, and again
- waits for the message confirming the resize has happened.

Since TUI is disabled, we call Term::resize with wait_for_msg == 0 because the
message is not printed, so stty is called twice, and afterwards we check for
the results of the two resizes, which is the test that is failing.

The problem is that not waiting for a response after each stty call opens up
the possibility of the responses being merged.

Fix this by calling Term::resize twice, changing one dimension at a time, and
waiting for a single prompt redisplay after each one.

Tested on x86_64-linux.

Reviewed-By: Alexandra Petlanova Hajkova <ahajkova@redhat.com>
PR testsuite/31822
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31822
gdb/testsuite/gdb.tui/resize-2.exp