From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id T6zeL4jUV2OxehAAWB0awg (envelope-from ) for ; Tue, 25 Oct 2022 08:20:24 -0400 Received: by simark.ca (Postfix, from userid 112) id B552F1E112; Tue, 25 Oct 2022 08:20:24 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=uceBzbB4; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id EEF7D1E0D5 for ; Tue, 25 Oct 2022 08:20:23 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5334B385735F for ; Tue, 25 Oct 2022 12:20:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5334B385735F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1666700423; bh=ux8BYu8KzohP97yW0fHRuVI0JFkf3eLtaU5L0crRMcI=; h=Date:Subject:To:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=uceBzbB4Br+j1sm0jTUT24yetww+HHNv3mjKCLvblvcFdFE5pF6J7HwwlP0QKX5nD e4RPne9WvIYKOaY9QCMxCsk8WlIYFXUNE2dFFOzuFogF9uXaXaJIs9H1+W9VG5ZhWF NvfjtTPXHtbA2Lrn/bpYGPmNSJGiLdLkvEP24u6w= Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by sourceware.org (Postfix) with ESMTPS id 1B1043857815 for ; Tue, 25 Oct 2022 12:20:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1B1043857815 Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 4D1491F88E; Tue, 25 Oct 2022 12:20:01 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 3700713A64; Tue, 25 Oct 2022 12:20:01 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id hEEODHHUV2MsFgAAMHmgww (envelope-from ); Tue, 25 Oct 2022 12:20:01 +0000 Message-ID: Date: Tue, 25 Oct 2022 14:20:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Subject: [PING][RFC][gdb/testsuite] Fix inferior pid in gdb.server/server-kill.exp Content-Language: en-US To: gdb-patches@sourceware.org References: <20221011140150.GA15277@delia.home> In-Reply-To: <20221011140150.GA15277@delia.home> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Tom de Vries via Gdb-patches Reply-To: Tom de Vries Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" On 10/11/22 16:01, Tom de Vries wrote: > Hi, > > Consider this patch in gdb.server/server-kill.exp: > ... > proc kill_server {} { > global server_pid > > + remote_exec target "pstree -a -p $server_pid" > remote_exec target "kill -9 $server_pid" > } > ... > > We have for kill_pid_of=server, as expected, the gdbserver killed: > ... > Executing on target: pstree -a -p 6969 (timeout = 300) > builtin_spawn -ignore SIGHUP pstree -a -p 6969^M > gdbserver,6969^M > `-server-kill,6976^M > Executing on target: kill -9 6969 (timeout = 300) > builtin_spawn -ignore SIGHUP kill -9 6969^M > ... > > But for kill_pid_of=inferior, we also have the gdbserver killed: > ... > Executing on target: pstree -a -p 6805 (timeout = 300) > builtin_spawn -ignore SIGHUP pstree -a -p 6805^M > gdbserver,6805^M > `-server-kill,6812^M > Executing on target: kill -9 6805 (timeout = 300) > builtin_spawn -ignore SIGHUP kill -9 6805^M > ... > > The proc prepare contains the pid extraction code: > ... > if { $::kill_pid_of == "inferior" } { > # Get the pid of GDBServer. > set test "p server_pid" > set server_pid 0 > gdb_test_multiple $test $test { > -re " = ($decimal)\r\n$gdb_prompt $" { > set server_pid $expect_out(1,string) > pass $test > } > } > } else { > set server_pid [exp_pid -i $::server_spawn_id] > } > ... > > The bit for $::kill_pid_of == "inferior" looks like the correct code to > extract the gdbserver pid (it prints the parent PID of the inferior). > > The bit for $::kill_pid_of == "server" does work for local target, but for > remote target using say target board remote-gdbserver-on-localhost, we have: > ... > Executing on target: pstree -a -p 10354 (timeout = 300) > builtin_spawn [open ...]^M > ssh,10354 -l vries localhost/gdbserver --once localhost:2350 s > XYZ0ZYX > Executing on target: kill -9 10354 (timeout = 300) > builtin_spawn [open ...]^M > XYZ0ZYX > ... > In other words, we're not killing the gdbserver, but the ssh session (a > problem which was already fixed once in commit f90183d7e31 ("Get GDBserver > pid on remote target")). > > Fix this by: > - using the $::kill_pid_of == "inferior" bit for the gdbserver pid, and > - using the inferior command for the the inferior pid. > > This introduces the following 4 FAILs: > ... > FAIL: gdb.server/server-kill.exp: kill_pid_of=inferior: test_tstatus: tstatus > FAIL: gdb.server/server-kill.exp: kill_pid_of=inferior: test_unwind_nosyms: bt > FAIL: gdb.server/server-kill.exp: kill_pid_of=inferior: test_unwind_syms: bt > FAIL: gdb.server/server-kill.exp: kill_pid_of=inferior: test_stepi: stepi > ... > > The first in more detail: > ... > (gdb) status-packet on > tstatus^M > No trace has been run on the target.^M > Collected 0 trace frames.^M > Trace buffer has 5242880 bytes of 5242880 bytes free (0% full).^M > Trace will stop if GDB disconnects.^M > Not looking at any trace frame.^M > (gdb) FAIL: gdb.server/server-kill.exp: kill_pid_of=inferior: test_tstatus: tstatus > ... > > The test-case contains the comment: > ... > # When KILL_PID_OF is set to 'inferior' then the pid we kill is that > # of the inferior running under gdbserver, when this process dies > # gdbserver itself will exit. > ... > but that doesn't seem to be happening. > > I've added a sleep 60 after the kill to rule out any timing issues, and indeed > after 60 seconds the gdbserver is still running. > > I don't know gdbserver well enough to decide whether the test-case assumption > is wrong and we need to fix the test-case, or there's a gdbserver problem > which is known or for which we can file a PR. > > Tested on x86_64-linux. > > Any comments? > Ping. Thanks, - Tom > [gdb/testsuite] Fix inferior pid in gdb.server/server-kill.exp > > --- > gdb/testsuite/gdb.server/server-kill.exp | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/gdb/testsuite/gdb.server/server-kill.exp b/gdb/testsuite/gdb.server/server-kill.exp > index 93daf482907..05f4f21bc0c 100644 > --- a/gdb/testsuite/gdb.server/server-kill.exp > +++ b/gdb/testsuite/gdb.server/server-kill.exp > @@ -75,10 +75,10 @@ proc prepare {} { > gdb_breakpoint ${srcfile}:[gdb_get_line_number "i = 0;"] > gdb_continue_to_breakpoint "after server_pid assignment" > > - if { $::kill_pid_of == "inferior" } { > + set server_pid 0 > + if { $::kill_pid_of == "server" } { > # Get the pid of GDBServer. > set test "p server_pid" > - set server_pid 0 > gdb_test_multiple $test $test { > -re " = ($decimal)\r\n$gdb_prompt $" { > set server_pid $expect_out(1,string) > @@ -86,7 +86,13 @@ proc prepare {} { > } > } > } else { > - set server_pid [exp_pid -i $::server_spawn_id] > + set test "inferior" > + gdb_test_multiple $test $test { > + -re -wrap "Current inferior is 1 \\\[process ($decimal)\\\].*" { > + set server_pid $expect_out(1,string) > + pass $test > + } > + } > } > > if {$server_pid == 0} {