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
next prev 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