Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Luis Machado via Gdb-patches <gdb-patches@sourceware.org>
To: Tom de Vries <tdevries@suse.de>, gdb-patches@sourceware.org
Subject: Re: [committed][gdb/testsuite] Make gdb.mi/mi-sym-info.exp more robust against timeouts
Date: Fri, 30 Apr 2021 09:55:54 -0300	[thread overview]
Message-ID: <1c7ee1d2-9ff0-645c-3a0e-b6d1ed3f328f@linaro.org> (raw)
In-Reply-To: <20210430092743.GA24286@delia.home>

Wouldn't it be more reliable to do line-by-line matching instead of 
sprinkling timeouts across the test? Or so I've been told.

This doesn't seem to be an instance where GDB is taking too long, but 
rather that the MI output is very verbose, right?

On 4/30/21 6:27 AM, Tom de Vries wrote:
> Hi,
> 
> Once in a while, I run into this timeout:
> ...
> FAIL: gdb.mi/mi-sym-info.exp: List all variables from debug information \
>    only (timeout)
> ...
> 
> I can make the timeout reproducible by setting timeout to 8s (instead of the
> default 10s) for the duration of that test.
> 
> Make the test-case more stable by fixing all timeouts caused by setting
> timeout to 5, either by adding with_timeout_factor, or increasing its factor.
> 
> Tested on x86_64-linux.  Also tested in parallel with stress -c 5, to simulate
> a busy system in another way.
> 
> Committed to trunk.
> 
> Thanks,
> - Tom
> 
> [gdb/testsuite] Make gdb.mi/mi-sym-info.exp more robust against timeouts
> 
> gdb/testsuite/ChangeLog:
> 
> 2021-04-30  Tom de Vries  <tdevries@suse.de>
> 
> 	* gdb.mi/mi-sym-info.exp: Add with_timeout_factor, and increase
> 	existing timeout factors.
> 
> ---
>   gdb/testsuite/gdb.mi/mi-sym-info.exp | 70 +++++++++++++++++++-----------------
>   1 file changed, 37 insertions(+), 33 deletions(-)
> 
> diff --git a/gdb/testsuite/gdb.mi/mi-sym-info.exp b/gdb/testsuite/gdb.mi/mi-sym-info.exp
> index f7f574aaeae..18f85182a7b 100644
> --- a/gdb/testsuite/gdb.mi/mi-sym-info.exp
> +++ b/gdb/testsuite/gdb.mi/mi-sym-info.exp
> @@ -55,42 +55,46 @@ set type_syms \
>   
>   # Fetch all functions, variables and types without any non-debug
>   # symbols.
> -set testname "List all functions from debug information only"
> -set cmd "111-symbol-info-functions"
> -set state 0
> -gdb_test_multiple $cmd $testname -prompt "${mi_gdb_prompt}$" {
> -    -re "111\\^done,symbols=\{debug=\\\[${symtab_re}" {
> -	if { $state == 0 } { incr state }
> -	exp_continue
> -    }
> -    -re ",${symtab_re}" {
> -	exp_continue
> -    }
> -    -re "\\\]\}\r\n${mi_gdb_prompt}$" {
> -	if { $state == 1 } {
> -	    pass $gdb_test_name
> -	} else {
> -	    fail $gdb_test_name
> +with_timeout_factor 2 {
> +    set testname "List all functions from debug information only"
> +    set cmd "111-symbol-info-functions"
> +    set state 0
> +    gdb_test_multiple $cmd $testname -prompt "${mi_gdb_prompt}$" {
> +	-re "111\\^done,symbols=\{debug=\\\[${symtab_re}" {
> +	    if { $state == 0 } { incr state }
> +	    exp_continue
> +	}
> +	-re ",${symtab_re}" {
> +	    exp_continue
> +	}
> +	-re "\\\]\}\r\n${mi_gdb_prompt}$" {
> +	    if { $state == 1 } {
> +		pass $gdb_test_name
> +	    } else {
> +		fail $gdb_test_name
> +	    }
>   	}
>       }
>   }
>   
> -set testname "List all variables from debug information only"
> -set cmd "112-symbol-info-variables"
> -set state 0
> -gdb_test_multiple $cmd $testname -prompt "${mi_gdb_prompt}$" {
> -    -re "112\\^done,symbols=\{debug=\\\[${symtab_re}" {
> -	if { $state == 0 } { incr state }
> -	exp_continue
> -    }
> -    -re ",${symtab_re}" {
> -	exp_continue
> -    }
> -    -re "\\\]\}\r\n${mi_gdb_prompt}$" {
> -	if { $state == 1 } {
> -	    pass $gdb_test_name
> -	} else {
> -	    fail $gdb_test_name
> +with_timeout_factor 2 {
> +    set testname "List all variables from debug information only"
> +    set cmd "112-symbol-info-variables"
> +    set state 0
> +    gdb_test_multiple $cmd $testname -prompt "${mi_gdb_prompt}$" {
> +	-re "112\\^done,symbols=\{debug=\\\[${symtab_re}" {
> +	    if { $state == 0 } { incr state }
> +	    exp_continue
> +	}
> +	-re ",${symtab_re}" {
> +	    exp_continue
> +	}
> +	-re "\\\]\}\r\n${mi_gdb_prompt}$" {
> +	    if { $state == 1 } {
> +		pass $gdb_test_name
> +	    } else {
> +		fail $gdb_test_name
> +	    }
>   	}
>       }
>   }
> @@ -150,7 +154,7 @@ gdb_test_multiple $cmd ${testname} -prompt "${mi_gdb_prompt}$" {
>       }
>   }
>   
> -with_timeout_factor 2 {
> +with_timeout_factor 4 {
>       set testname "List all variables"
>       set cmd "115-symbol-info-variables --include-nondebug"
>       set state 0
> 

  reply	other threads:[~2021-04-30 12:56 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-30  9:27 Tom de Vries
2021-04-30 12:55 ` Luis Machado via Gdb-patches [this message]
2021-04-30 13:05   ` tdevries
2021-04-30 13:06   ` Simon Marchi via Gdb-patches
2021-04-30 13:20     ` Luis Machado via Gdb-patches
2021-04-30 13:28       ` Simon Marchi via Gdb-patches
2021-04-30 13:34         ` Luis Machado via Gdb-patches
2021-04-30 13:41           ` Simon Marchi via Gdb-patches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1c7ee1d2-9ff0-645c-3a0e-b6d1ed3f328f@linaro.org \
    --to=gdb-patches@sourceware.org \
    --cc=luis.machado@linaro.org \
    --cc=tdevries@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox