Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Markus Metzger <markus.t.metzger@intel.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH v2 1/2] record: set stop_pc in "record goto" command
Date: Thu, 09 Jul 2015 10:38:00 -0000	[thread overview]
Message-ID: <559E4F22.6040500@redhat.com> (raw)
In-Reply-To: <1436422132-8936-1-git-send-email-markus.t.metzger@intel.com>

Thanks.

On 07/09/2015 07:08 AM, Markus Metzger wrote:
> When navigating in the recorded execution trace via "record goto", we do not
> set stop_pc.  This may trigger an internal error in infrun.c when stepping
> from that location.  Set it.
> 
> (gdb) rec full
> (gdb) c
> Continuing.
> 
> Breakpoint 1, foo (void) at foo.c:42
> 42             x = y
> (gdb) rn
> foo (void)
>     at foo.c:41
> 41             y = x
> (gdb) rec go end
> Go forward to insn number 98724
>     at foo.c:42
> 42             x = y
> (gdb) n
> infrun.c:2382: internal-error: resume: Assertion `sig != GDB_SIGNAL_0' failed.
> A problem internal to GDB has been detected,
> further debugging may prove unreliable.
> Quit this debugging session? (y or n)

I realized that we had context in our minds from the private
chats that might be missing from the archives/logs.

I think we should extend the commit log a bit to connect the
dots between "stop_pc not set" <-> "internal error".  E.g.,:

~~~
This happens because there's a breakpoint at PC when the "next"
is issued, so that breapoint should be immediately stepped over.
That should have been detected/done by proceed, here:

  if (addr == (CORE_ADDR) -1)
    {
      if (pc == stop_pc
	  && breakpoint_here_p (aspace, pc) == ordinary_breakpoint_here
	  && execution_direction != EXEC_REVERSE)
	/* There is a breakpoint at the address we will resume at,
	   step one instruction before inserting breakpoints so that
	   we do not stop right away (and report a second hit at this
	   breakpoint).

	   Note, we don't do this in reverse, because we won't
	   actually be executing the breakpoint insn anyway.
	   We'll be (un-)executing the previous instruction.  */
	tp->stepping_over_breakpoint = 1;

But since stop_pc was stale, the pc == stop_pc check failed, and left the
breakpont at PC inserted.

~~~~~~

> +set bp [gdb_get_line_number "fun4.3" $srcfile]
> +gdb_breakpoint $srcfile:$bp
> +
> +# record the execution until we hit a breakpoint
> +gdb_test_no_output "record btrace"
> +gdb_continue_to_breakpoint "cont to $bp" ".*$srcfile:$bp.*"
> +

Seems like these put line number in the test message
in gdb.sum.  Please tweak the messages to avoid that,
so that if the test lines change in the future, the test
messages remain stable.

> +# reverse-step, then jump to the end of the trace
> +gdb_test "reverse-next" ".*fun4\.2.*"
> +gdb_test "record goto end" ".*fun4\.3.*"
> +
> +# test that we can continue stepping

Please mention the breakpoint here.  E.g.,:

# test that we can continue stepping, even though
# there's a breakpoint at PC.

> +gdb_test "next" ".*fun4\.4.*"

Fix these and you're good to go.  Please push.

Thanks,
Pedro Alves


  parent reply	other threads:[~2015-07-09 10:38 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-09  6:09 Markus Metzger
2015-07-09  6:08 ` [PATCH v2 2/2] ari, btrace: avoid unsigned long long Markus Metzger
2015-07-09 11:15   ` Pedro Alves
2015-07-10  7:17     ` Metzger, Markus T
2015-07-10 14:05       ` Pedro Alves
2015-07-13  7:20         ` Metzger, Markus T
2015-07-13  9:35           ` Pedro Alves
2015-07-09 10:38 ` Pedro Alves [this message]
2015-07-13  7:39   ` [PATCH v2 1/2] record: set stop_pc in "record goto" command Metzger, Markus T
2015-07-13  9:36     ` Pedro Alves

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=559E4F22.6040500@redhat.com \
    --to=palves@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=markus.t.metzger@intel.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