Re: [PATCH 4/4] gdb: kfail for PR14161

Pedro Alves
2012-06-15T19:33:51Z

On 06/14/2012 04:01 PM, Yao Qi wrote:

> On Wednesday 13 June 2012 00:20:30 Pedro Alves wrote:
>>> > > + # Due to PR gdb/14161, sockets files are not removed when agent
>>> > > exists.
>>> > >
>>> > > + # However this problem only affects native gdb, so we don't have to
>>> > > bother
>>> > >
>>> > > + # 'remote_file target delete'. Simple tcl command 'file delete'
>>> > > should + # be OK.
>>> > > + eval file delete [glob "/tmp/gdb_ust*"]
>>> > > +
>> >
>> > "bother with". But note this doesn't work with remote host testing.
> I use "remote_file target delete" in the new patch when "is_remote target" is
> true, otherwise use tcl builtin command to remove files.
>
> gdb/testsuite:
>
> 2012-06-14 Yao Qi <yao@codesourcery.com>
>
> KFAIL for PR14161.
> * gdb.trace/strace.exp (strace_remove_socket): kfail for native.
> Cleanup socket files.
> ---
> gdb/testsuite/gdb.trace/strace.exp | 14 +++++++++++++-
> 1 files changed, 13 insertions(+), 1 deletions(-)
>
> diff --git a/gdb/testsuite/gdb.trace/strace.exp b/gdb/testsuite/gdb.trace/strace.exp
> index b96ab41..1520055 100644
> --- a/gdb/testsuite/gdb.trace/strace.exp
> +++ b/gdb/testsuite/gdb.trace/strace.exp
> @@ -100,6 +100,10 @@ proc strace_remove_socket { action } {
>
> sleep 5
>
> + if { ![is_remote target] && ! [string equal $action "detach"] } {
> + setup_kfail gdb/14161 *-*-*
> + }
> +
> set test "socket file removed"
> if [is_remote target] {
> set status [remote_exec target "sh -c \"exit `\\\[ -S $socket_file ]`\""]
> @@ -332,7 +336,15 @@ if { ![is_remote target]
> strace_remove_socket "quit"
> strace_remove_socket "detach"
> strace_remove_socket "continue"
> +
> + # Due to PR gdb/14161, sockets files are not removed when agent exists.
> + if [is_remote target] {
> + foreach match [glob -nocomplain "/tmp/gdb_ust*"] {
> + remote_file target delete $match

That's unfortunately not good, because while the "delete" runs on
the "target", the "glob" is running on the "build" machine (which is usually
the "host", unless you're doing remote-host testing).

> + }
> + } else {
> + eval file delete [glob "/tmp/gdb_ust*"]

> + }

This else doesn't work for remote-host testing either. With remote-
-host testing, you have expect running on machine A (build), GDB
running on machine B (host), and that GDB connecting to machine
C (target). Usually, either A and B are the same, or B and C are
the same, though A != B != C is possible.

Maybe we can avoid the need for globing in the first place, by making
strace_remove_socket (and whatever other function in the file, if
necessary), remove the socket file before returning, while they
still know the inferior's PID?

--
Pedro Alves