From: Pedro Alves <palves@redhat.com>
To: gdb-patches@sourceware.org
Subject: Re: [PATCH 0/4] Fix PR gdb/19187 (process record over a fork causes internal error)
Date: Wed, 10 Aug 2016 22:11:00 -0000 [thread overview]
Message-ID: <aa3528ec-b769-7930-c693-d68dc8e3d0eb@redhat.com> (raw)
In-Reply-To: <1455475070-17797-1-git-send-email-palves@redhat.com>
Yao reminded me about this series, and asked about putting it in 7.12.
I've done so now: pushed to master and 7.12 branch.
Thanks,
Pedro Alves
On 02/14/2016 06:37 PM, Pedro Alves wrote:
> This series fixes:
>
> (gdb) record
> break marker2
> Breakpoint 2 at 0x40067a: file /home/pedro/gdb/mygit/src/gdb/testsuite/gdb.reverse/waitpid-reverse.c, line 30.
> (gdb) PASS: gdb.reverse/waitpid-reverse.exp: set breakpoint at marker2
> continue
> Continuing.
> /home/pedro/gdb/mygit/src/gdb/record-full.c:1720: internal-error: record_full_remove_breakpoint: removing unknown breakpoint
> A problem internal to GDB has been detected,
> further debugging may prove unreliable.
> Quit this debugging session? (y or n)
> KFAIL: gdb.reverse/waitpid-reverse.exp: continue to breakpoint: marker2 (GDB internal error) (PRMS: gdb/19187)
>
> The problem is that the target side can't distinguish between deleting
> a breakpoint and detaching a breakpoint.
>
> Right after a fork is detected, we detach breakpoints from the child
> (detach_breakpoints), which calls into target_remove_breakpoint with
> inferior_ptid pointing at the child process, but leaves the breakpoint
> marked inserted (in the parent).
>
> Since record-full.c's target_remove_breakpoint implementation doesn't
> know we're detaching a breakpoint, it removes the breakpoint from its
> own breakpoint table.
>
> Then when we later remove the breakpoint from the parent, we fail that
> assertion, since the breakpoint is unexpectedly not found in the
> record-full.c breakpoint table.
>
> The first three patches pass down the reason for removing the
> breakpoint all the way to the target.
>
> Patch 4 then simply makes record-full.c not delete the breakpoint from
> its breakpoint table when we're detaching the breakpoint from a fork
> child.
>
> Pedro Alves (4):
> Simplify remove_breakpoint interface
> Introduce 'enum remove_bp_reason'
> Plumb enum remove_bp_reason all the way to target_remove_breakpoint
> Fix PR gdb/19187 (process record over a fork causes internal error)
>
> gdb/break-catch-sig.c | 3 +-
> gdb/break-catch-syscall.c | 2 +-
> gdb/breakpoint.c | 70 +++++++++++++--------------
> gdb/breakpoint.h | 14 +++++-
> gdb/corelow.c | 10 +++-
> gdb/exec.c | 10 +++-
> gdb/mem-break.c | 3 +-
> gdb/record-btrace.c | 6 ++-
> gdb/record-full.c | 15 ++++--
> gdb/remote.c | 5 +-
> gdb/target-debug.h | 2 +
> gdb/target-delegates.c | 10 ++--
> gdb/target.c | 5 +-
> gdb/target.h | 9 ++--
> gdb/testsuite/gdb.reverse/waitpid-reverse.exp | 4 +-
> 15 files changed, 105 insertions(+), 63 deletions(-)
>
prev parent reply other threads:[~2016-08-10 22:11 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-14 18:37 Pedro Alves
2016-02-14 18:37 ` [PATCH 1/4] Simplify remove_breakpoint interface Pedro Alves
2016-02-14 18:37 ` [PATCH 3/4] Plumb enum remove_bp_reason all the way to target_remove_breakpoint Pedro Alves
2016-02-15 9:12 ` Yao Qi
2016-02-15 14:41 ` Pedro Alves
2016-02-14 18:37 ` [PATCH 2/4] Introduce 'enum remove_bp_reason' Pedro Alves
2016-02-14 18:44 ` [PATCH 4/4] Fix PR gdb/19187 (process record over a fork causes internal error) Pedro Alves
2016-08-10 22:11 ` Pedro Alves [this message]
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=aa3528ec-b769-7930-c693-d68dc8e3d0eb@redhat.com \
--to=palves@redhat.com \
--cc=gdb-patches@sourceware.org \
/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