Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH 1/2] [gdb/testsuite] Fix timeout in do_self_tests
@ 2026-09-06 15:48 Tom de Vries
  2026-09-06 15:48 ` [PATCH 2/2] [gdb] Exclude unavailable hardware threads in default worker-threads Tom de Vries
  2026-09-07  4:36 ` [PATCH 1/2] [gdb/testsuite] Fix timeout in do_self_tests Thiago Jung Bauermann
  0 siblings, 2 replies; 9+ messages in thread
From: Tom de Vries @ 2026-09-06 15:48 UTC (permalink / raw)
  To: gdb-patches

I noticed a patch reporting a timeout in the selftests on slow systems [1].

I tried to see if I could trigger some timeouts.

With the following setup:
- gdb build with -O0
- running gdb.gdb/*.exp
- aarch64-linux platform
- all cpu threads set to the lowest value: 600 Mhz
- taskset -c 0
I managed to trigger timeouts in the form of warnings:
...
(gdb) set height 0
WARNING: Couldn't set the height to 0
set width 0
WARNING: Couldn't set the width to 0.
break main
(gdb) set width 0
(gdb) break main
Breakpoint 1 at 0x41767c: file gdb.c, line 30.
(gdb)
...
in both gdb.gdb/selftest.exp and gdb.gdb/python-helper.exp.

Note that this is extra slow because the default worker-threads is set using
std::thread::hardware_concurrency, which is 8 even though we use taskset -c 0:
...
$ taskset -c 0 gdb -q -batch -ex "maint show worker-thread"
The number of worker threads GDB can use is the default (currently 8).
...
making 8 worker threads compete for 1 cpu thread.

The timeouts are triggered in do_self_tests by gdb loading the symbols in the
background, making the effort to do so overlap with subsequent commands.

Fix this using "maintenance set dwarf synchronous on".

[1] https://sourceware.org/pipermail/gdb-patches/2026-September/230133.html
---
 gdb/testsuite/lib/selftest-support.exp | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/gdb/testsuite/lib/selftest-support.exp b/gdb/testsuite/lib/selftest-support.exp
index bcfa99e8f34..cc9ad0b4127 100644
--- a/gdb/testsuite/lib/selftest-support.exp
+++ b/gdb/testsuite/lib/selftest-support.exp
@@ -246,7 +246,18 @@ proc do_self_tests {body} {
 	    set ::GDB "libtool --mode=execute $::GDB"
 	}
 
-	set ::GDBFLAGS "$::GDBFLAGS $file"
+	# By default, dwarf synchronous is off, so the effort to load $file
+	# may be spread over subsequent commands and cause timeouts on slow
+	# systems.  Use "maintenance set dwarf synchronous on", to make sure
+	# $file is completely loaded during gdb_start.
+	# Proc gdb_start has a timeout of 600 for spawning gdb, which seems
+	# sufficient to handle both spawning gdb and loading $file.
+	# Using gdb_load would permit a timeout of 120s just for loading
+	# $file, but we're not using that because we want libtool to
+	# update $file.
+	append ::GDBFLAGS \
+	    " " -iex " " {"maintenance set dwarf synchronous on"} \
+	    " " $file
 	gdb_start
     }
 

base-commit: 668300e5c9e1e8baa55d9402cdd4dff5e81601d2
-- 
2.51.0


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-09-16 17:28 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-06 15:48 [PATCH 1/2] [gdb/testsuite] Fix timeout in do_self_tests Tom de Vries
2026-09-06 15:48 ` [PATCH 2/2] [gdb] Exclude unavailable hardware threads in default worker-threads Tom de Vries
2026-09-07  4:44   ` Thiago Jung Bauermann
2026-09-07  6:52     ` Tom de Vries
2026-09-09 12:02     ` Tom de Vries
2026-09-16 17:27       ` Tom de Vries
2026-09-07  4:36 ` [PATCH 1/2] [gdb/testsuite] Fix timeout in do_self_tests Thiago Jung Bauermann
2026-09-09 11:57   ` Tom de Vries
2026-09-09 20:28     ` Thiago Jung Bauermann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox