Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Agovic, Sanimir" <sanimir.agovic@intel.com>
To: 'Yao Qi' <yao@codesourcery.com>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: RE: [PATCH] Set entryval_error to NULL if entryval is set
Date: Mon, 05 Aug 2013 08:26:00 -0000	[thread overview]
Message-ID: <0377C58828D86C4588AEEC42FC3B85A717646EE3@IRSMSX105.ger.corp.intel.com> (raw)
In-Reply-To: <1375690566-7417-1-git-send-email-yao@codesourcery.com>

lgtm. Unfortunately I cannot approve your patch.

 -Sanimir

> -----Original Message-----
> From: gdb-patches-owner@sourceware.org [mailto:gdb-patches-owner@sourceware.org] On Behalf
> Of Yao Qi
> Sent: Monday, August 05, 2013 10:16 AM
> To: gdb-patches@sourceware.org
> Subject: [PATCH] Set entryval_error to NULL if entryval is set
> 
> Hi,
> I get an internal error when 'set print entry-values' to 'both' and
> then type command 'tfind 0', shown as below,
> 
> (gdb) target remote :1234
> Remote debugging using :1234
> (gdb) b main
> Breakpoint 1 at 0x80483eb: file ../../../../git/gdb/testsuite/gdb.trace/trace-
> unavailable.c, line 41.
> (gdb) c
> Continuing.
> 
> Breakpoint 1,
> main () at ../../../../git/gdb/testsuite/gdb.trace/trace-unavailable.c:41
> 41        bar (4, s);
> 
> (gdb) trace bar
> Tracepoint 3 at 0x80483ca: file ../../../../git/gdb/testsuite/gdb.trace/trace-
> unavailable.c, line 22.
> (gdb) actions
> Enter actions for tracepoint 3, one per line.
> End with a line saying just "end".
>  >collect array
>  >collect j
>  >end
> (gdb) tstart
> (gdb) b marker
> Breakpoint 4 at 0x80483e3: file ../../../../git/gdb/testsuite/gdb.trace/trace-
> unavailable.c, line 34.
> (gdb) c
> Continuing.
> Breakpoint 4, marker () at ../../../../git/gdb/testsuite/gdb.trace/trace-unavailable.c:34
> 34      {}
> (gdb) tstop
> (gdb) set print entry-values both
> (gdb) tfind 0
> ../../../git/gdb/stack.c:223: internal-error: print_frame_arg: Assertion `!arg->val ||
> !arg->error' failed.
> A problem internal to GDB has been detected,
> further debugging may prove unreliable.
> Quit this debugging session? "
> 
> In print_frame_arg, this assert indicates that either arg->val or
> arg->error should be NULL.  It looks right to me.  This patch is to
> set 'entryval_error' NULL when 'entryval' is set (non-NULL).
> 
> The test case is modified to expose this internal error, and without
> fix in read_frame_arg, we can get the internal error when running
> gdb.trace/collection.exp
> 
> (gdb) PASS: gdb.trace/collection.exp: collect args collectively: tfind test frame
> tfind -1^M
> No longer looking at any trace frame^M
> 79      }^M
> (gdb) set print entry-values only^M
> (gdb) tfind 0^M
> Found trace frame 0, tracepoint 4^M
> A problem internal to GDB has been detected,^M
> further debugging may prove unreliable.^M
> Quit this debugging session? (y or n) FAIL: gdb.trace/collection.exp: collect args
> collectively: tfind 0 with entry-values only (GDB internal error)
> 
> This internal error is fixed when the patch is applied.  The patch is
> tested on x86_64-linux with board file unix.exp and
> native-gdbserver.exp respectively.
> 
> gdb:
> 
> 2013-08-05  Yao Qi  <yao@codesourcery.com>
> 
> 	* stack.c (read_frame_arg): Set 'entryval_error' to NULL if
> 	'entryval' is set.
> 
> gdb/testsuite:
> 
> 2013-08-05  Yao Qi  <yao@codesourcery.com>
> 
> 	* gdb.trace/collection.exp (gdb_collect_args_test): Set
> 	"only" and "both" to 'print entry-values' before selecting
> 	trace frame.
> ---
>  gdb/stack.c                            |    5 ++++-
>  gdb/testsuite/gdb.trace/collection.exp |   16 ++++++++++++++++
>  2 files changed, 20 insertions(+), 1 deletions(-)
> 
> diff --git a/gdb/stack.c b/gdb/stack.c
> index 3177877..9e9ebc1 100644
> --- a/gdb/stack.c
> +++ b/gdb/stack.c
> @@ -475,7 +475,10 @@ read_frame_arg (struct symbol *sym, struct frame_info *frame,
>  	  || print_entry_values == print_entry_values_both
>  	  || (print_entry_values == print_entry_values_preferred
>  	      && (!val || value_optimized_out (val))))
> -	entryval = allocate_optimized_out_value (SYMBOL_TYPE (sym));
> +	{
> +	  entryval = allocate_optimized_out_value (SYMBOL_TYPE (sym));
> +	  entryval_error = NULL;
> +	}
>      }
>    if ((print_entry_values == print_entry_values_compact
>         || print_entry_values == print_entry_values_if_needed
> diff --git a/gdb/testsuite/gdb.trace/collection.exp
> b/gdb/testsuite/gdb.trace/collection.exp
> index f6d44ce..844cbb5 100644
> --- a/gdb/testsuite/gdb.trace/collection.exp
> +++ b/gdb/testsuite/gdb.trace/collection.exp
> @@ -128,6 +128,22 @@ proc gdb_collect_args_test { myargs msg } {
>      # Begin the test.
>      run_trace_experiment $msg args_test_func
> 
> +    # Frame arguments and their entry values are displaced correctly with
> +    # various values of "print entry-values" when a trace frame is
> +    # selected.
> +
> +    gdb_test "tfind -1" ".*" ""
> +    gdb_test_no_output "set print entry-values only" ""
> +    gdb_test "tfind 0" \
> +	" \\(argc@entry=\[^,\]*, argi@entry=\[^,\]*, argf@entry=\[^,\]*, argd@entry=\[^,\]*,
> argstruct@entry=\[^,\]*, argarray@entry=\[^,\]*\\) .*" \
> +	"collect $msg: tfind 0 with entry-values only"
> +
> +    gdb_test "tfind -1" ".*" ""
> +    gdb_test_no_output "set print entry-values both" ""
> +    gdb_test "tfind 0" \
> +	" \\(argc=\[^,\]*, argc@entry=\[^,\]*, argi=\[^,\]*, argi@entry=\[^,\]*,
> argf=\[^,\]*, argf@entry=\[^,\]*, argd=\[^,\]*, argd@entry=\[^,\]*, argstruct=\[^,\]*,
> argstruct@entry=\[^,\]*, argarray=\[^,\]*, argarray@entry=\[^,\]*\\) .*" \
> +	"collect $msg: tfind 0 with entry-values both"
> +
>      gdb_test "print argc" \
>  	    "\\$\[0-9\]+ = 1 '.001'$cr" \
>  	    "collect $msg: collected arg char"
> --
> 1.7.7.6

Intel GmbH
Dornacher Strasse 1
85622 Feldkirchen/Muenchen, Deutschland
Sitz der Gesellschaft: Feldkirchen bei Muenchen
Geschaeftsfuehrer: Christian Lamprechter, Hannes Schwaderer, Douglas Lusk
Registergericht: Muenchen HRB 47456
Ust.-IdNr./VAT Registration No.: DE129385895
Citibank Frankfurt a.M. (BLZ 502 109 00) 600119052


  reply	other threads:[~2013-08-05  8:26 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-05  8:17 Yao Qi
2013-08-05  8:26 ` Agovic, Sanimir [this message]
2013-08-05 14:06 ` Tom Tromey
2013-08-08  6:50   ` Yao Qi
2013-08-08 19:56     ` Tom Tromey
2013-08-09  0:36       ` Yao Qi
2013-08-05 14:17 ` Pedro Alves
2013-08-09 16:28 ` Jan Kratochvil

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=0377C58828D86C4588AEEC42FC3B85A717646EE3@IRSMSX105.ger.corp.intel.com \
    --to=sanimir.agovic@intel.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