Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Tom de Vries via Gdb-patches <gdb-patches@sourceware.org>
To: Simon Marchi <simon.marchi@polymtl.ca>,
	John Baldwin <jhb@FreeBSD.org>,
	Simon Marchi <simon.marchi@efficios.com>,
	gdb-patches@sourceware.org
Subject: Re: [PATCH 6/6] gdb: don't share aspace/pspace on fork with "detach-on-fork on" and "follow-fork-mode child"
Date: Tue, 28 Sep 2021 17:10:41 +0200	[thread overview]
Message-ID: <e5554549-09f0-db5a-87da-2c6c6abe2682@suse.de> (raw)
In-Reply-To: <41efe1d2-64fe-b0d1-029f-363bfc567bf5@polymtl.ca>

On 9/27/21 9:32 PM, Simon Marchi via Gdb-patches wrote:
> On 2021-09-10 23:16, Simon Marchi via Gdb-patches wrote:
>>>> Note that the problem described above happens today with "detach-on-fork
>>>> off" and "follow-fork-mode child", because we create new spaces for the
>>>> child.  This will have to be addressed later.
>>>>
>>>> Test-wise, improve gdb.base/foll-fork.exp to set a breakpoint that is
>>>> expected to have a location in each inferiors.  Without the fix, when
>>>> the two inferiors erroneously share a program space, GDB reports a
>>>> single location.
>>>
>>> So I wonder about the case where follow-fork-mode is parent and
>>> detach-on-fork is off?  In that case, should the existing aspace/pspace
>>> stay with the parent and the child get clones?  That is, using the
>>> follow-fork-mode setting to determine which inferior gets the existing
>>> aspace/pspace and assigning the cloned copies to the !follow-fork-mode
>>> inferior?
>>
>> I think that would work, to address the problem described above.
> 
> FYI, I tried doing the above (giving the original program space to the
> child with "follow-fork-mode child" and "detach-on-fork off") and I hit
> some problems.  Attached to the program space is the list of shared
> libraries.  So GDB would now think the parent has no shared library.  I
> added a solib_create_inferior_hook call to force re-discovering the
> shared libraries in the parent.  That seemed to work, but then in MI
> there were spurious =library-loaded events that made it look like
> inferior 1 re-loaded shared libraries.  I'm also worried about what
> other per-program space is kept, that could cause some kind of trouble
> for the parent.  So I will put this off for now, as it's not something
> that should be done in a rush, I think.
> 
> In the mean time, I'll re-test this series and push it if all seems
> good.

I'm seeing:
...
(gdb) PASS: gdb.base/foll-fork.exp: follow-fork-mode=child:
detach-on-fork=on: cmd=next 2: test_follow_fork: break callee
info breakpoints 2^M
Num     Type           Disp Enb Address            What^M
2       breakpoint     keep y   <MULTIPLE>         ^M
2.1                         y   0x00000000004005ae in callee at
/home/vries/gdb_versions/devel/src/gdb/testsuite/gdb.base/foll-fork.c:9
inf 2^M
2.2                         y   0x00000000004005ae in callee at
/home/vries/gdb_versions/devel/src/gdb/testsuite/gdb.base/foll-fork.c:9
inf 1^M
(gdb) FAIL: gdb.base/foll-fork.exp: follow-fork-mode=child:
detach-on-fork=on: cmd=next 2: test_follow_fork: info breakpoints
...

Looks like the test-case expects first inf 1, then inf 2, and this is
the other way around.

Should the test-case regexp be updated?

Thanks,
- Tom

  reply	other threads:[~2021-09-28 15:11 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-10 20:53 [PATCH 1/6] gdb.base/foll-fork.exp: remove DUPLICATEs Simon Marchi via Gdb-patches
2021-09-10 20:53 ` [PATCH 2/6] gdb.base/foll-fork.exp: remove gating based on target triplet Simon Marchi via Gdb-patches
2021-09-10 20:53 ` [PATCH 3/6] gdb.base/foll-fork.exp: refactor to restart GDB between each portion of the test Simon Marchi via Gdb-patches
2021-09-10 20:54 ` [PATCH 4/6] gdb.base/foll-fork.exp: rename variables Simon Marchi via Gdb-patches
2021-09-10 20:54 ` [PATCH 5/6] gdb.base/foll-fork.exp: use foreach_with_prefix to handle prefixes Simon Marchi via Gdb-patches
2021-09-10 20:54 ` [PATCH 6/6] gdb: don't share aspace/pspace on fork with "detach-on-fork on" and "follow-fork-mode child" Simon Marchi via Gdb-patches
2021-09-10 23:33   ` John Baldwin
2021-09-11  3:16     ` Simon Marchi via Gdb-patches
2021-09-11 13:02       ` Simon Marchi via Gdb-patches
2021-09-11 13:03         ` Simon Marchi via Gdb-patches
2021-09-27 19:32       ` Simon Marchi via Gdb-patches
2021-09-28 15:10         ` Tom de Vries via Gdb-patches [this message]
2021-09-28 19:12           ` Simon Marchi via Gdb-patches
2021-09-28 19:31             ` Pedro Alves
2021-09-28 19:35               ` Pedro Alves
2021-09-28 23:32                 ` Simon Marchi via Gdb-patches
2021-09-28 22:38             ` Tom de Vries via Gdb-patches
2021-09-23 19:23 ` [PATCH 1/6] gdb.base/foll-fork.exp: remove DUPLICATEs 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=e5554549-09f0-db5a-87da-2c6c6abe2682@suse.de \
    --to=gdb-patches@sourceware.org \
    --cc=jhb@FreeBSD.org \
    --cc=simon.marchi@efficios.com \
    --cc=simon.marchi@polymtl.ca \
    --cc=tdevries@suse.de \
    /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