[gdb/testsuite] Ignore DEBUGINFOD_URLS

Message ID 20210331123331.GA3054@delia
State New
Headers show
Series
  • [gdb/testsuite] Ignore DEBUGINFOD_URLS
Related show

Commit Message

Tom de Vries March 31, 2021, 12:33 p.m.
Hi,

On openSUSE Tumbleweed, DEBUGINFOD_URLS is now defined by default:
...
$ echo $DEBUGINFOD_URLS
https://debuginfod.opensuse.org/
...

With DEBUGINFOD_URLS defined we run into:
...
FAIL: gdb.mi/mi-sym-info.exp: List all functions from debug information only \
  (timeout)
...
as reported in PR27667.

There's a latency of ~0.5s per request, which is ok-ish for interactive usage.
But the symbol-info-functions command ends up issuing 21 source requests,
which means we easily run into the 10s timeout.

Fix this by unsetting DEBUGINFOD_URLS in default_gdb_init.

Any comments?

Thanks,
- Tom

[gdb/testsuite] Ignore DEBUGINFOD_URLS

gdb/testsuite/ChangeLog:

2021-03-31  Tom de Vries  <tdevries@suse.de>

	PR testsuite/27667
	* lib/gdb.exp (default_gdb_init): Unset DEBUGINFOD_URLS.

---
 gdb/testsuite/lib/gdb.exp | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Simon Marchi via Gdb-patches March 31, 2021, 1:04 p.m. | #1
On 2021-03-31 8:33 a.m., Tom de Vries wrote:> Hi,
> 

> On openSUSE Tumbleweed, DEBUGINFOD_URLS is now defined by default:

> ...

> $ echo $DEBUGINFOD_URLS

> https://debuginfod.opensuse.org/

> ...

> 

> With DEBUGINFOD_URLS defined we run into:

> ...

> FAIL: gdb.mi/mi-sym-info.exp: List all functions from debug information only \

>   (timeout)

> ...

> as reported in PR27667.

> 

> There's a latency of ~0.5s per request, which is ok-ish for interactive usage.

> But the symbol-info-functions command ends up issuing 21 source requests,

> which means we easily run into the 10s timeout.

> 

> Fix this by unsetting DEBUGINFOD_URLS in default_gdb_init.

> 

> Any comments?

> 

> Thanks,

> - Tom

> 

> [gdb/testsuite] Ignore DEBUGINFOD_URLS

> 

> gdb/testsuite/ChangeLog:

> 

> 2021-03-31  Tom de Vries  <tdevries@suse.de>

> 

> 	PR testsuite/27667

> 	* lib/gdb.exp (default_gdb_init): Unset DEBUGINFOD_URLS.

> 

> ---

>  gdb/testsuite/lib/gdb.exp | 4 ++++

>  1 file changed, 4 insertions(+)

> 

> diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp

> index 73fea3a104d..d18aec648d9 100644

> --- a/gdb/testsuite/lib/gdb.exp

> +++ b/gdb/testsuite/lib/gdb.exp

> @@ -5270,6 +5270,10 @@ proc default_gdb_init { test_file_name } {

>      # tests.

>      setenv TERM "dumb"

>  

> +    # If DEBUGINFOD_URLS is set, gdb will try to download sources and

> +    # debug info for f.i. system libraries.  Prevent this.

> +    unsetenv DEBUGINFOD_URLS

> +

>      # Ensure that GDBHISTFILE and GDBHISTSIZE are removed from the

>      # environment, we don't want these modifications to the history

>      # settings.

> 


I think this is OK, we want to reduce external influence on the tests as
much as possible.

However, I could imagine we could have a "debuginfod" board file, which
runs all tests with a controlled debuginfod server it spawns itself, and
it would set DEBUGINFOD_URLS accordingly.  It could override gdb_compile
to feed all compiled binaries to the debuginfod server, something like
that.

Simon
Tom de Vries March 31, 2021, 1:21 p.m. | #2
On 3/31/21 3:04 PM, Simon Marchi wrote:
> On 2021-03-31 8:33 a.m., Tom de Vries wrote:> Hi,

>>

>> On openSUSE Tumbleweed, DEBUGINFOD_URLS is now defined by default:

>> ...

>> $ echo $DEBUGINFOD_URLS

>> https://debuginfod.opensuse.org/

>> ...

>>

>> With DEBUGINFOD_URLS defined we run into:

>> ...

>> FAIL: gdb.mi/mi-sym-info.exp: List all functions from debug information only \

>>   (timeout)

>> ...

>> as reported in PR27667.

>>

>> There's a latency of ~0.5s per request, which is ok-ish for interactive usage.

>> But the symbol-info-functions command ends up issuing 21 source requests,

>> which means we easily run into the 10s timeout.

>>

>> Fix this by unsetting DEBUGINFOD_URLS in default_gdb_init.

>>

>> Any comments?

>>

>> Thanks,

>> - Tom

>>

>> [gdb/testsuite] Ignore DEBUGINFOD_URLS

>>

>> gdb/testsuite/ChangeLog:

>>

>> 2021-03-31  Tom de Vries  <tdevries@suse.de>

>>

>> 	PR testsuite/27667

>> 	* lib/gdb.exp (default_gdb_init): Unset DEBUGINFOD_URLS.

>>

>> ---

>>  gdb/testsuite/lib/gdb.exp | 4 ++++

>>  1 file changed, 4 insertions(+)

>>

>> diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp

>> index 73fea3a104d..d18aec648d9 100644

>> --- a/gdb/testsuite/lib/gdb.exp

>> +++ b/gdb/testsuite/lib/gdb.exp

>> @@ -5270,6 +5270,10 @@ proc default_gdb_init { test_file_name } {

>>      # tests.

>>      setenv TERM "dumb"

>>  

>> +    # If DEBUGINFOD_URLS is set, gdb will try to download sources and

>> +    # debug info for f.i. system libraries.  Prevent this.

>> +    unsetenv DEBUGINFOD_URLS

>> +

>>      # Ensure that GDBHISTFILE and GDBHISTSIZE are removed from the

>>      # environment, we don't want these modifications to the history

>>      # settings.

>>

> 

> I think this is OK, we want to reduce external influence on the tests as

> much as possible.

> 

> However, I could imagine we could have a "debuginfod" board file, which

> runs all tests with a controlled debuginfod server it spawns itself, and

> it would set DEBUGINFOD_URLS accordingly.  It could override gdb_compile

> to feed all compiled binaries to the debuginfod server, something like

> that.


I also thought about that possibility.

Anyway, such a board file could define something like:
...
proc gdb_init { args } {
  set res [default_gdb_init {*}$args]
  setenv DEBUGINFOD_URLS "..."
  return $res
}
...

Committed, with the test for info exists env(DEBUGINFOD_URLS) added.

Thanks,
- Tom

Patch

diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 73fea3a104d..d18aec648d9 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -5270,6 +5270,10 @@  proc default_gdb_init { test_file_name } {
     # tests.
     setenv TERM "dumb"
 
+    # If DEBUGINFOD_URLS is set, gdb will try to download sources and
+    # debug info for f.i. system libraries.  Prevent this.
+    unsetenv DEBUGINFOD_URLS
+
     # Ensure that GDBHISTFILE and GDBHISTSIZE are removed from the
     # environment, we don't want these modifications to the history
     # settings.