Re: [PATCH] Fix fail in gdb.base/interrupt-noterm.exp

Pedro Alves
2016-01-22T16:47:19Z

On 01/22/2016 04:29 PM, Yao Qi wrote:
> Hi,
> In my testing, I see the following fail intermittently,
>
> interrupt
> (gdb) PASS: gdb.base/interrupt-noterm.exp: interrupt
> [Inferior 1 (process 13407) exited normally]
>
> Child exited with status 0
> FAIL: gdb.base/interrupt-noterm.exp: inferior received SIGINT (timeout)
>
> because the interrupt packet may be sent to GDBserver before the SIGIO
> handler is installed. The fix in this patch is to let GDB wait
> for 500 ms between "continue &" and "interrupt" to make sure
> SIGIO handler is installed already in GDBserver side.

Can you expand the rationale some more?

E.g., why is this not a gdbserver bug? Instintively I'd say it is.

Thanks,
Pedro Alves

>
> gdb/testsuite:
>
> 2016-01-22 Yao Qi <yao.qi@linaro.org>
>
> * gdb.base/interrupt-noterm.exp: Add "after 500".
> ---
> gdb/testsuite/gdb.base/interrupt-noterm.exp | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/gdb/testsuite/gdb.base/interrupt-noterm.exp b/gdb/testsuite/gdb.base/interrupt-noterm.exp
> index 05f6076..9b5bb17 100644
> --- a/gdb/testsuite/gdb.base/interrupt-noterm.exp
> +++ b/gdb/testsuite/gdb.base/interrupt-noterm.exp
> @@ -55,6 +55,9 @@ if { $async_supported < 0 } {
> return 1
> }
>
> +# Wait a while so that GDBserver's SIGIO handler is in place.
> +after 500
> +
> # With native debugging, and no terminal (emulated by interactive-mode
> # off, above), GDB had a bug where "interrupt" would send SIGINT to
> # its own process group, instead of the inferior's.
>