[PING,gdb/testsuite] Fix UNRESOLVED in gdb.server/server-kill-python.exp

Message ID 20200210122802.GA19962@delia
State New, archived
Headers

Commit Message

Tom de Vries Feb. 10, 2020, 12:28 p.m. UTC
  Hi,

[ Ping and ml resubmission of gerrit review item
https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/760 . ]

The test-case gdb.server/server-kill-python.exp runs fine by itself:
...
Running src/gdb/testsuite/gdb.server/server-kill-python.exp ...

                === gdb Summary ===

nr of expected passes            3
...

But if we run f.i. gdb.server/file-transfer.exp before it, we get instead:
...
Running src/gdb/testsuite/gdb.server/server-kill-python.exp ...
ERROR: GDB process no longer exists

                === gdb Summary ===

nr of expected passes            13
nr of unresolved testcases       1
...

We can see the origin of the problem here:
...
spawn gdbserver --once localhost:2347 \
  build/gdb/testsuite/outputs/gdb.server/file-transfer/file-transfer \
  build/gdb/testsuite/outputs/gdb.server/server-kill-python/server-kill-python^M
Process build/gdb/testsuite/outputs/gdb.server/file-transfer/file-transfer
  \ created; pid = 9464^M
Listening on port 2347^M
...

The spawn of the gdbserver for the server-kill-python test-case gets as
executable argument the file-transfer binary.

This is caused by proc gdbserver_spawn attempting to load the exec file in
$file_last_loaded.  This is something that is meant to load the same exec in
the gdbserver that was earlier loaded into gdb.

In this test-case however, nothing has been loaded into gdb by the test-case,
and consequently we load the file that was loaded into gdb in the previous
test-case.

Fix this by unsetting $file_last_loaded in gdb_init.

Build and reg-tested on x86_64-linux.

OK for trunk?

Thanks,
- Tom

[gdb/testsuite] Fix UNRESOLVED in gdb.server/server-kill-python.exp

gdb/testsuite/ChangeLog:

2020-01-31  Tom de Vries  <tdevries@suse.de>

	PR testsuite/25488
	* lib/gdb.exp (gdb_init): Unset $file_last_loaded.

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

Comments

Luis Machado Feb. 10, 2020, 10:14 p.m. UTC | #1
On 2/10/20 9:28 AM, Tom de Vries wrote:
> Hi,
> 
> [ Ping and ml resubmission of gerrit review item
> https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/760 . ]
> 
> The test-case gdb.server/server-kill-python.exp runs fine by itself:
> ...
> Running src/gdb/testsuite/gdb.server/server-kill-python.exp ...
> 
>                  === gdb Summary ===
> 
> nr of expected passes            3
> ...
> 
> But if we run f.i. gdb.server/file-transfer.exp before it, we get instead:
> ...
> Running src/gdb/testsuite/gdb.server/server-kill-python.exp ...
> ERROR: GDB process no longer exists
> 
>                  === gdb Summary ===
> 
> nr of expected passes            13
> nr of unresolved testcases       1
> ...
> 
> We can see the origin of the problem here:
> ...
> spawn gdbserver --once localhost:2347 \
>    build/gdb/testsuite/outputs/gdb.server/file-transfer/file-transfer \
>    build/gdb/testsuite/outputs/gdb.server/server-kill-python/server-kill-python^M
> Process build/gdb/testsuite/outputs/gdb.server/file-transfer/file-transfer
>    \ created; pid = 9464^M
> Listening on port 2347^M
> ...
> 
> The spawn of the gdbserver for the server-kill-python test-case gets as
> executable argument the file-transfer binary.
> 
> This is caused by proc gdbserver_spawn attempting to load the exec file in
> $file_last_loaded.  This is something that is meant to load the same exec in
> the gdbserver that was earlier loaded into gdb.
> 
> In this test-case however, nothing has been loaded into gdb by the test-case,
> and consequently we load the file that was loaded into gdb in the previous
> test-case.
> 
> Fix this by unsetting $file_last_loaded in gdb_init.
> 
> Build and reg-tested on x86_64-linux.
> 
> OK for trunk?
> 
> Thanks,
> - Tom
> 
> [gdb/testsuite] Fix UNRESOLVED in gdb.server/server-kill-python.exp
> 
> gdb/testsuite/ChangeLog:
> 
> 2020-01-31  Tom de Vries  <tdevries@suse.de>
> 
> 	PR testsuite/25488
> 	* lib/gdb.exp (gdb_init): Unset $file_last_loaded.
> 
> ---
>   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 2d230b791e..0a1080c34a 100644
> --- a/gdb/testsuite/lib/gdb.exp
> +++ b/gdb/testsuite/lib/gdb.exp
> @@ -5053,6 +5053,10 @@ proc gdb_init { test_file_name } {
>       set gdbserver_reconnect_p 1
>       unset gdbserver_reconnect_p
>   
> +    # Clear $last_loaded_file
> +    global last_loaded_file
> +    unset -nocomplain last_loaded_file
> +
>       # Reset GDB number of instances
>       global gdb_instances
>       set gdb_instances 0
> 

Thanks for fixing this. I ran into this a few times.

The patch LGTM.
  
Tom Tromey Feb. 11, 2020, 3 p.m. UTC | #2
>>>>> "Luis" == Luis Machado <luis.machado@linaro.org> writes:

>> +    # Clear $last_loaded_file
>> +    global last_loaded_file
>> +    unset -nocomplain last_loaded_file

Luis> Thanks for fixing this. I ran into this a few times.

Luis> The patch LGTM.

Looks good to me as well.  Thank you.

Tom
  

Patch

diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 2d230b791e..0a1080c34a 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -5053,6 +5053,10 @@  proc gdb_init { test_file_name } {
     set gdbserver_reconnect_p 1
     unset gdbserver_reconnect_p
 
+    # Clear $last_loaded_file
+    global last_loaded_file
+    unset -nocomplain last_loaded_file
+
     # Reset GDB number of instances
     global gdb_instances
     set gdb_instances 0