Linux-perf-users Archive mirror
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@kernel.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Kan Liang <kan.liang@linux.intel.com>,
	James Clark <james.clark@arm.com>,
	Athira Rajeev <atrajeev@linux.vnet.ibm.com>,
	Colin Ian King <colin.i.king@gmail.com>,
	nabijaczleweli@nabijaczleweli.xyz, Leo Yan <leo.yan@linux.dev>,
	Song Liu <song@kernel.org>,
	Ilkka Koskinen <ilkka@os.amperecomputing.com>,
	Ben Gainey <ben.gainey@arm.com>,
	K Prateek Nayak <kprateek.nayak@amd.com>,
	Yanteng Si <siyanteng@loongson.cn>,
	Sun Haiyong <sunhaiyong@loongson.cn>,
	Changbin Du <changbin.du@huawei.com>,
	Andi Kleen <ak@linux.intel.com>,
	Thomas Richter <tmricht@linux.ibm.com>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Dima Kogan <dima@secretsauce.net>,
	zhaimingbing <zhaimingbing@cmss.chinamobile.com>,
	Paran Lee <p4ranlee@gmail.com>, Li Dong <lidong@vivo.com>,
	Tiezhu Yang <yangtiezhu@loongson.cn>,
	Chengen Du <chengen.du@canonical.com>,
	linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 6/7] perf dso: Reference counting related fixes
Date: Mon, 6 May 2024 15:35:13 -0300	[thread overview]
Message-ID: <Zjki4arHA6DifQ1n@x1> (raw)
In-Reply-To: <CAP-5=fVi-qDAP1D+ZOgLD19Cp0K1yn13cgq65g3MuOFNoefc3Q@mail.gmail.com>

On Mon, May 06, 2024 at 08:26:02AM -0700, Ian Rogers wrote:
> On Mon, May 6, 2024 at 7:44 AM Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> > On Sat, May 04, 2024 at 02:38:02PM -0700, Ian Rogers wrote:
> > > Ensure gets and puts are better aligned fixing reference couting
> > > checking problems.
> > >
> > > Signed-off-by: Ian Rogers <irogers@google.com>
> > > ---
> > >  tools/perf/util/machine.c    |  4 +--
> > >  tools/perf/util/map.c        |  1 +
> > >  tools/perf/util/symbol-elf.c | 51 ++++++++++++++++++------------------
> > >  3 files changed, 28 insertions(+), 28 deletions(-)
> > >
> > > diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
> > > index 0b8fb14f5ff6..4a4541a2e887 100644
> > > --- a/tools/perf/util/machine.c
> > > +++ b/tools/perf/util/machine.c
> > > @@ -683,7 +683,7 @@ static int machine__process_ksymbol_register(struct machine *machine,
> > >                                            struct perf_sample *sample __maybe_unused)
> > >  {
> > >       struct symbol *sym;
> > > -     struct dso *dso;
> > > +     struct dso *dso = NULL;
> > >       struct map *map = maps__find(machine__kernel_maps(machine), event->ksymbol.addr);
> > >       int err = 0;
> > >
> > > @@ -696,7 +696,6 @@ static int machine__process_ksymbol_register(struct machine *machine,
> > >               }
> > >               dso__set_kernel(dso, DSO_SPACE__KERNEL);
> > >               map = map__new2(0, dso);
> > > -             dso__put(dso);
> > >               if (!map) {
> > >                       err = -ENOMEM;
> > >                       goto out;
> > > @@ -735,6 +734,7 @@ static int machine__process_ksymbol_register(struct machine *machine,
> > >       dso__insert_symbol(dso, sym);
> > >  out:
> > >       map__put(map);
> > > +     dso__put(dso);
> > >       return err;
> > >  }
> >
> > This seems to match the patch description, good, just aligning the puts
> >
> > > diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c
> > > index 117c4bb78b35..e1d14936a60d 100644
> > > --- a/tools/perf/util/map.c
> > > +++ b/tools/perf/util/map.c
> > > @@ -200,6 +200,7 @@ struct map *map__new(struct machine *machine, u64 start, u64 len,
> > >                               dso__set_build_id(dso, dso__bid(header_bid_dso));
> > >                               dso__set_header_build_id(dso, 1);
> > >                       }
> > > +                     dso__put(header_bid_dso);
> > >               }
> > >               dso__put(dso);
> > >       }
> >
> > But this is a missing one, so not aligning, but fixing a separate issue,
> > i.e. a missing put? Should go on a different patch, probably with a
> > Fixes.
> 
> The Fixes would be for a patch in the series - albeit that we've spent

Well, if it fixes something that got merged before, it should have the
Fixes, please then have it in the patch fixing it:

Fixes: f649ed80f3cabbf1 ("perf dsos: Tidy reference counting and locking")

> over half a year landing this and a month since that change landed:
> https://lore.kernel.org/all/20240410064214.2755936-3-irogers@google.com/
> The issue is that previously a find wouldn't do a get, so per the old
> code no put is necessary. Gets were added to finds to cover the race
> between a dso being returned from dsos and the item potentially being
> removed from dsos.

The last patch applied:

⬢[acme@toolbox perf-tools-next]$ git log --oneline -1
ee756ef7491eafd7 (HEAD -> perf-tools-next, perf-tools-next.korg/tmp.perf-tools-next) perf dso: Add reference count checking and accessor functions
⬢[acme@toolbox perf-tools-next]$

Needed this, which I applied and pushed to tmp.perf-tools-next:

  util/symbol.c: In function ‘dso__load_bfd_symbols’:
  util/symbol.c:1683:9: error: too few arguments to function ‘dso__set_adjust_symbols’
   1683 |         dso__set_adjust_symbols(dso);
        |         ^~~~~~~~~~~~~~~~~~~~~~~
  In file included from util/symbol.c:21:
  util/dso.h:268:20: note: declared here
    268 | static inline void dso__set_adjust_symbols(struct dso *dso, bool val)
        |                    ^~~~~~~~~~~~~~~~~~~~~~~
  make[6]: *** [/home/acme/git/perf-tools-next/tools/build/Makefile.build:106: /tmp/tmp.ZWHbQftdN6/util/symbol.o] Error 1
    MKDIR   /tmp/tmp.ZWHbQftdN6/tests/workloads/
  make[6]: *** Waiting for unfinished jobs....

This was updated:

  -       symbols__fixup_end(&dso->symbols, false);
  -       symbols__fixup_duplicate(&dso->symbols);
  -       dso->adjust_symbols = 1;
  +       symbols__fixup_end(dso__symbols(dso), false);
  +       symbols__fixup_duplicate(dso__symbols(dso));
  +       dso__set_adjust_symbols(dso);

But not build tested with BUILD_NONDISTRO and libbfd devel files installed
(binutils-devel on fedora), I noticed it using 'make -C tools/perf build-test'.

Add the missing argument:

   	symbols__fixup_end(dso__symbols(dso), false);
   	symbols__fixup_duplicate(dso__symbols(dso));
  -	dso__set_adjust_symbols(dso);
  +	dso__set_adjust_symbols(dso, true);

  reply	other threads:[~2024-05-06 18:35 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-04 21:37 [PATCH v6 0/7] dso/dsos memory savings and clean up Ian Rogers
2024-05-04 21:37 ` [PATCH v6 1/7] perf dsos: Switch backing storage to array from rbtree/list Ian Rogers
2024-05-04 21:37 ` [PATCH v6 2/7] perf dsos: Remove __dsos__addnew Ian Rogers
2024-05-04 21:37 ` [PATCH v6 3/7] perf dsos: Remove __dsos__findnew_link_by_longname_id Ian Rogers
2024-05-04 21:38 ` [PATCH v6 4/7] perf dsos: Switch hand code to bsearch Ian Rogers
2024-05-04 21:38 ` [PATCH v6 5/7] perf dso: Add reference count checking and accessor functions Ian Rogers
2024-05-04 21:38 ` [PATCH v6 6/7] perf dso: Reference counting related fixes Ian Rogers
2024-05-06 14:44   ` Arnaldo Carvalho de Melo
2024-05-06 15:26     ` Ian Rogers
2024-05-06 18:35       ` Arnaldo Carvalho de Melo [this message]
2024-05-04 21:38 ` [PATCH v6 7/7] perf dso: Use container_of to avoid a pointer in dso_data Ian Rogers

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=Zjki4arHA6DifQ1n@x1 \
    --to=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=atrajeev@linux.vnet.ibm.com \
    --cc=ben.gainey@arm.com \
    --cc=changbin.du@huawei.com \
    --cc=chengen.du@canonical.com \
    --cc=colin.i.king@gmail.com \
    --cc=dima@secretsauce.net \
    --cc=ilkka@os.amperecomputing.com \
    --cc=irogers@google.com \
    --cc=james.clark@arm.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@linux.intel.com \
    --cc=kprateek.nayak@amd.com \
    --cc=leo.yan@linux.dev \
    --cc=lidong@vivo.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mhiramat@kernel.org \
    --cc=mingo@redhat.com \
    --cc=nabijaczleweli@nabijaczleweli.xyz \
    --cc=namhyung@kernel.org \
    --cc=p4ranlee@gmail.com \
    --cc=peterz@infradead.org \
    --cc=siyanteng@loongson.cn \
    --cc=song@kernel.org \
    --cc=sunhaiyong@loongson.cn \
    --cc=tmricht@linux.ibm.com \
    --cc=yangtiezhu@loongson.cn \
    --cc=zhaimingbing@cmss.chinamobile.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).