* [PATCH] [gdb/testsuite] Fix race in gdb.threads/detach-step-over.exp
@ 2022-12-13 14:02 Tom de Vries
2022-12-16 12:41 ` Pedro Alves
0 siblings, 1 reply; 2+ messages in thread
From: Tom de Vries @ 2022-12-13 14:02 UTC (permalink / raw)
To: gdb-patches
Once in a while I run into:
...
FAIL: gdb.threads/detach-step-over.exp: \
breakpoint-condition-evaluation=host: target-non-stop=off: non-stop=off: \
displaced=off: iter 1: all threads running
...
In can easily reproduce this by doing:
...
# Wait a bit, to give time for the threads to hit the
# breakpoint.
- sleep 1
return true
...
Fix this by counting the running threads in a loop, effectively allowing 10
seconds (instead of 1) for the threads to start running, but only sleeping if
needed.
Reduces total execution time from 1m27s to 56s.
Tested on x86_64-linux.
---
.../gdb.threads/detach-step-over.exp | 34 ++++++++++++++-----
1 file changed, 26 insertions(+), 8 deletions(-)
diff --git a/gdb/testsuite/gdb.threads/detach-step-over.exp b/gdb/testsuite/gdb.threads/detach-step-over.exp
index 38d796620cb..225d3ab5313 100644
--- a/gdb/testsuite/gdb.threads/detach-step-over.exp
+++ b/gdb/testsuite/gdb.threads/detach-step-over.exp
@@ -187,10 +187,6 @@ proc prepare_test_iter {testpid non_stop attempt attempts tid_re} {
}
}
- # Wait a bit, to give time for the threads to hit the
- # breakpoint.
- sleep 1
-
return true
}
@@ -233,7 +229,8 @@ proc_with_prefix test_detach_command {condition_eval target_non_stop non_stop di
set running_count 0
set interrupted 0
- gdb_test_multiple "info threads" "all threads running" {
+ set running_expected [expr ($::n_threads + 1) * 2]
+ gdb_test_multiple "info threads" "threads running" {
-re "\\(running\\)" {
incr running_count
exp_continue
@@ -254,10 +251,31 @@ proc_with_prefix test_detach_command {condition_eval target_non_stop non_stop di
}
}
}
- -re "$::gdb_prompt $" {
- gdb_assert {$running_count == ($::n_threads + 1) * 2} \
- $gdb_test_name
+ -re "$::gdb_prompt " {
+ }
+ }
+
+ if { $interrupted == 0 } {
+ set iterations 0
+ set max_iterations 10
+ while { $running_count < $running_expected } {
+ sleep 1
+ set running_count 0
+ gdb_test_multiple "info threads" "threads running" {
+ -re "\\(running\\)" {
+ incr running_count
+ exp_continue
+ }
+ -re "$::gdb_prompt " {
+ }
+ }
+ incr iterations
+ if { $iterations == $max_iterations } {
+ break
+ }
}
+ gdb_assert {$running_count == $running_expected} \
+ "all threads running"
}
gdb_test "detach" "Detaching from.*"
base-commit: fa59ab98685e4b5431d2be423f449df5069a454e
--
2.35.3
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] [gdb/testsuite] Fix race in gdb.threads/detach-step-over.exp
2022-12-13 14:02 [PATCH] [gdb/testsuite] Fix race in gdb.threads/detach-step-over.exp Tom de Vries
@ 2022-12-16 12:41 ` Pedro Alves
0 siblings, 0 replies; 2+ messages in thread
From: Pedro Alves @ 2022-12-16 12:41 UTC (permalink / raw)
To: Tom de Vries, gdb-patches
On 2022-12-13 2:02 p.m., Tom de Vries via Gdb-patches wrote:
> Once in a while I run into:
> ...
> FAIL: gdb.threads/detach-step-over.exp: \
> breakpoint-condition-evaluation=host: target-non-stop=off: non-stop=off: \
> displaced=off: iter 1: all threads running
> ...
>
> In can easily reproduce this by doing:
> ...
> # Wait a bit, to give time for the threads to hit the
> # breakpoint.
> - sleep 1
>
> return true
> ...
>
> Fix this by counting the running threads in a loop, effectively allowing 10
> seconds (instead of 1) for the threads to start running, but only sleeping if
> needed.
>
> Reduces total execution time from 1m27s to 56s.
Cool, thanks. I've run into this race too once in a while, but never managed to find time
to look into it.
LGTM, with just one nit:
> + if { $interrupted == 0 } {
Just a bit below we have:
if {!$interrupted} {
I'd rather the same form is used in both places, and I think the second form is better.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-12-16 12:41 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-13 14:02 [PATCH] [gdb/testsuite] Fix race in gdb.threads/detach-step-over.exp Tom de Vries
2022-12-16 12:41 ` Pedro Alves
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).