From 2f000c80e2f6c2946939b2a7a1ea1c0340626afb Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Wed, 5 May 2021 15:13:17 +0200 Subject: [PATCH] [gdb/testsuite] Fix timeout in gdb.threads/detach-step-over.exp with readnow When running test-case gdb.threads/detach-step-over.exp with target board readnow, I run into: ... Reading symbols from /lib64/libc.so.6...^M Reading symbols from \ /usr/lib/debug/lib64/libc-2.26.so-2.26-lp152.26.6.1.x86_64.debug...^M Expanding full symbols from \ /usr/lib/debug/lib64/libc-2.26.so-2.26-lp152.26.6.1.x86_64.debug...^M FAIL: gdb.threads/detach-step-over.exp: \ breakpoint-condition-evaluation=host: target-non-stop=on: non-stop=on: \ displaced=off: iter 2: attach (timeout) ... Fix this by doing exp_continue when encountering the "Reading symbols" or "Expanding full symbols" lines. This is still fragile and times out with a higher load, similated f.i. by stress -c 5. Fix that by using a timeout factor of 2. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2021-05-05 Tom de Vries * gdb.threads/detach-step-over.exp: Do exp_continue when encountering "Reading symbols" or "Expanding full symbols" lines. Using timeout factor of 2 for attach. --- gdb/testsuite/ChangeLog | 6 +++ .../gdb.threads/detach-step-over.exp | 49 ++++++++++++------- 2 files changed, 38 insertions(+), 17 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 2be97a2f394..c84f1168cf5 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2021-05-05 Tom de Vries + + * gdb.threads/detach-step-over.exp: Do exp_continue when encountering + "Reading symbols" or "Expanding full symbols" lines. Using timeout + factor of 2 for attach. + 2021-05-05 Tom de Vries * gdb.threads/fork-plus-threads.exp: Handle "New LWP " and diff --git a/gdb/testsuite/gdb.threads/detach-step-over.exp b/gdb/testsuite/gdb.threads/detach-step-over.exp index 8c58aebad8a..27718551188 100644 --- a/gdb/testsuite/gdb.threads/detach-step-over.exp +++ b/gdb/testsuite/gdb.threads/detach-step-over.exp @@ -106,23 +106,38 @@ proc test {condition_eval target_non_stop non_stop displaced} { with_test_prefix "iter $attempt" { gdb_test "inferior 1" "Switching to .*" - set attached 0 - set eperm 0 - set test "attach" - gdb_test_multiple "attach $testpid" $test { - -re "new threads in iteration" { - # Seen when "set debug libthread_db" is on. - exp_continue - } - -re "is a zombie - the process has already terminated.*$gdb_prompt " { - fail $gdb_test_name - } - -re "Unable to attach: .*$gdb_prompt " { - fail $gdb_test_name - } - -re "Attaching to program.*process $testpid.*$gdb_prompt " { - pass $test - set attached 1 + with_timeout_factor 2 { + set attached 0 + set saw_attaching 0 + set eperm 0 + set test "attach" + gdb_test_multiple "attach $testpid" $test { + -re "Attaching to program.*process $testpid\r\n" { + set saw_attaching 1 + exp_continue + } + -re "new threads in iteration" { + # Seen when "set debug libthread_db" is on. + exp_continue + } + -re "Reading symbols from|Expanding full symbols from" { + # Prevent -readnow timeout. + exp_continue + } + -re "is a zombie - the process has already terminated.*$gdb_prompt " { + fail $gdb_test_name + } + -re "Unable to attach: .*$gdb_prompt " { + fail $gdb_test_name + } + -re "\r\n$gdb_prompt " { + if { $saw_attaching } { + set attached 1 + pass $test + } else { + fail $test + } + } } } -- 2.30.2