[gdb/testsuite] Fix timeout in gdb.threads/detach-step-over.exp with readnow
authorTom de Vries <tdevries@suse.de>
Wed, 5 May 2021 13:13:17 +0000 (15:13 +0200)
committerTom de Vries <tdevries@suse.de>
Wed, 5 May 2021 13:13:17 +0000 (15:13 +0200)
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  <tdevries@suse.de>

* 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
gdb/testsuite/gdb.threads/detach-step-over.exp

index 2be97a2f3946dbc099a735b4fe5ca82f37b8f39f..c84f1168cf57ddf5b65a4134319da9f8bcbc7bf8 100644 (file)
@@ -1,3 +1,9 @@
+2021-05-05  Tom de Vries  <tdevries@suse.de>
+
+       * 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  <tdevries@suse.de>
 
        * gdb.threads/fork-plus-threads.exp: Handle "New LWP <n>" and
index 8c58aebad8ae8b17ed8a4df2cc07a5284405a355..277185511883984ca5bfa722f57fc2decc8d452f 100644 (file)
@@ -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
+                       }
+                   }
                }
            }