Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Yao Qi <yao@codesourcery.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 1/4] New test for removing socket file in gdb.trace/strace.exp.
Date: Thu, 21 Jun 2012 15:56:00 -0000	[thread overview]
Message-ID: <4FE3442E.1030407@redhat.com> (raw)
In-Reply-To: <4FE1D42C.5040605@codesourcery.com>

On 06/20/2012 02:46 PM, Yao Qi wrote:

> gdb/testsuite:
> 
> 2012-06-20  Yao Qi  <yao@codesourcery.com>
> 
> 	PR gdb/14161.
> 	* gdb.trace/strace.exp (strace_remove_socket): New proc to test
> 	the socket file is removed.
> 	Invoke proc strace_remove_socket without checking
> 	'is_remote target'.
> ---
>  gdb/testsuite/gdb.trace/strace.exp |  108 ++++++++++++++++++++++++++++++++----
>  1 file changed, 98 insertions(+), 10 deletions(-)
> 
> diff --git a/gdb/testsuite/gdb.trace/strace.exp b/gdb/testsuite/gdb.trace/strace.exp
> index 51da92b..d45c66d 100644
> --- a/gdb/testsuite/gdb.trace/strace.exp
> +++ b/gdb/testsuite/gdb.trace/strace.exp
> @@ -39,6 +39,90 @@ if { [gdb_compile $srcdir/$subdir/$srcfile $binfile executable $additional_flags
>      return -1
>  }
>  
> +# Test that the socket file is removed when GDB quits, detaches or
> +# resumes the inferior until it exits.
> +
> +proc strace_remove_socket { action } {
> +    with_test_prefix "remove_socket_after_${action}" {
> +
> +    global executable
> +    global gdb_prompt
> +
> +    # Restart with a fresh gdb.
> +    clean_restart $executable
> +    if ![runto_main] {
> +	fail "Can't run to main"
> +	return -1
> +    }
> +
> +    # List the markers in program.
> +    gdb_test "info static-tracepoint-markers" \
> +	".*ust/bar\[\t \]+n\[\t \]+.*ust/bar2\[\t \]+n\[\t \]+.*"
> +
> +    set pid ""
> +    set test "collect pid"
> +    gdb_test_multiple "info inferiors" $test {
> +	-re "process (\[-0-9a-fx\]+) \[^\n\]*\n.*${gdb_prompt} $" {
> +	    set pid $expect_out(1,string)
> +	    pass $test
> +	}
> +	-re ".*${gdb_prompt} $" {
> +	    fail $test
> +	}
> +    }
> +
> +    set test "socket file exists"
> +    set socket_file "/tmp/gdb_ust${pid}"
> +    set status [remote_exec target "sh -c { \[ -S $socket_file \] }"]
> +
> +    if { [lindex $status 0] == 0 } {
> +	pass $test
> +    } else {
> +	fail $test
> +    }
> +
> +    send_gdb "${action}\n"
> +    gdb_expect {
> +	-re "A debugging session is active.\r\n.*\r\nQuit anyway\\? \\(y or n\\) $" {
> +	    send_gdb "y\n"
> +	}
> +	-re "Detaching .*, process .*$" {
> +	}
> +	-re "Continuing.*$" {
> +	}
> +    }
> +
> +    set exists 1
> +
> +    for {set i 1} {$i <= 5} {incr i} {
> +	set status [remote_exec target "sh -c { \[ -S $socket_file \] }"]
> +	if { [lindex $status 0] != 0 } {
> +	    set exists 0
> +	    break
> +	}
> +	sleep 1
> +    }
> +
> +    if { ![is_remote target] && ![string equal $action "detach"] } {
> +	setup_kfail gdb/14161 *-*-*
> +    }
> +
> +    set test "socket file removed"
> +
> +    if { $exists } {
> +	fail $test
> +    } else {
> +	pass $test
> +    }
> +
> +    if { [string equal $action "quit"] && [is_remote host] } {
> +	global gdb_spawn_id
> +	# unset gdb_spawn_id here to avoid sending command 'quit' to GDB
> +	# later in default_gdb_exit.
> +	unset gdb_spawn_id
> +    }
> +}}
> +
>  proc strace_info_marker { } { with_test_prefix "info_marker" {
>      global executable
>      global gdb_prompt
> @@ -242,28 +326,32 @@ proc strace_trace_on_diff_addr { } { with_test_prefix "trace_diff_addr" {
>      gdb_test "tfind" "Target failed to find requested trace frame\\..*"
>  }}
>  
> -clean_restart $executable
> +# Run it on x86/x86_64 linux.
> +if { [istarget "x86_64-*-linux*"] || [istarget "i\[34567\]86-*-linux*"] } {
> +    strace_info_marker
> +    strace_remove_socket "quit"
> +    strace_remove_socket "detach"
> +    strace_remove_socket "continue"
> +}
>  
> +clean_restart $executable
>  if ![runto_main] {
>      fail "Can't run to main to check for trace support"
>      return -1
>  }
> -
> -# Run it on native x86/x86_64 linux.
> -if { ![is_remote target]
> -     && ([istarget "x86_64-*-linux*"] || [istarget "i\[34567\]86-*-linux*"]) } {
> -    strace_info_marker
> -    return
> -}
> -
>  if { ![gdb_target_supports_trace] } then {
> +    # GDB detaches inferior so that the socket file can be removed.
> +    gdb_test_multiple "detach" "detach" {
> +	-re "Detaching .*, process .*${gdb_prompt} $" {
> +	    pass "detach"
> +	}
> +    }


This could just be gdb_test ?  But I'm confused on why "detach"
is needed at all here, going from that comment.  Wouldn't not
doing anything (and therefore gdb quitting and killing the inferior)
have the same effect?

>      unsupported "Current target does not support trace"
>      return -1;
>  }
>  
>  gdb_load_shlibs $libipa


If we now have tests earlier that run against remote targets,
it seems this should be moved earlier too.

>  
> -strace_info_marker
>  strace_probe_marker
>  
>  strace_trace_on_same_addr "trace"



-- 
Pedro Alves


  reply	other threads:[~2012-06-21 15:56 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-09 12:47 [PATCH 0/4] PR14161: a partial fix Yao Qi
2012-06-09 12:47 ` [PATCH 4/4] gdb: kfail for PR14161 Yao Qi
2012-06-12 16:21   ` Pedro Alves
2012-06-14 15:01     ` Yao Qi
2012-06-15 19:33       ` Pedro Alves
2012-06-20 13:55         ` Yao Qi
2012-06-09 12:47 ` [PATCH 3/4] New agent command 'kill' and used by gdbserver Yao Qi
2012-06-09 13:11   ` Eli Zaretskii
2012-06-12 16:14   ` Pedro Alves
2012-06-14 14:50     ` Yao Qi
2012-06-14 16:37       ` Eli Zaretskii
2012-06-15 19:25       ` Pedro Alves
2012-06-20 13:49         ` Yao Qi
2012-06-21 16:05           ` Pedro Alves
2012-06-09 12:47 ` [PATCH 2/4] Remove socket file at exit Yao Qi
2012-06-12 15:14   ` Pedro Alves
2012-06-14 14:44     ` Yao Qi
2012-06-15 19:02       ` Pedro Alves
2012-06-09 12:47 ` [PATCH 1/4] New test for removing socket file in gdb.trace/strace.exp Yao Qi
2012-06-12 14:51   ` Pedro Alves
2012-06-14 14:39     ` Yao Qi
2012-06-15 19:00       ` Pedro Alves
2012-06-20 13:46         ` Yao Qi
2012-06-21 15:56           ` Pedro Alves [this message]
2012-06-27  3:55             ` Yao Qi
2012-07-27  8:19 ` [committed] : [PATCH 0/4] PR14161: a partial fix Yao Qi

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=4FE3442E.1030407@redhat.com \
    --to=palves@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=yao@codesourcery.com \
    /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