From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Jiri Olsa <jolsa@redhat.com>
Cc: Jin Yao <yao.jin@linux.intel.com>,
jolsa@kernel.org, peterz@infradead.org, mingo@redhat.com,
alexander.shishkin@linux.intel.com, Linux-kernel@vger.kernel.org,
ak@linux.intel.com, kan.liang@intel.com, yao.jin@intel.com
Subject: Re: [PATCH] perf record: Skip side-band event setup if HAVE_LIBBPF_SUPPORT is not set
Date: Fri, 7 Aug 2020 09:08:24 -0300 [thread overview]
Message-ID: <20200807120824.GA2456573@kernel.org> (raw)
In-Reply-To: <20200806194357.GA539212@krava>
Em Thu, Aug 06, 2020 at 09:43:57PM +0200, Jiri Olsa escreveu:
> On Wed, Aug 05, 2020 at 10:29:37AM +0800, Jin Yao wrote:
> > We received an error report that perf-record caused 'Segmentation fault'
> > on a newly system (e.g. on the new installed ubuntu).
> >
> > (gdb) backtrace
> > #0 __read_once_size (size=4, res=<synthetic pointer>, p=0x14) at /root/0-jinyao/acme/tools/include/linux/compiler.h:139
> > #1 atomic_read (v=0x14) at /root/0-jinyao/acme/tools/include/asm/../../arch/x86/include/asm/atomic.h:28
> > #2 refcount_read (r=0x14) at /root/0-jinyao/acme/tools/include/linux/refcount.h:65
> > #3 perf_mmap__read_init (map=map@entry=0x0) at mmap.c:177
> > #4 0x0000561ce5c0de39 in perf_evlist__poll_thread (arg=0x561ce68584d0) at util/sideband_evlist.c:62
> > #5 0x00007fad78491609 in start_thread (arg=<optimized out>) at pthread_create.c:477
> > #6 0x00007fad7823c103 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
>
> hum, I recall discussing the same issue,
> I thought it was already fixed :-\ in any case:
>
> Acked-by: Jiri Olsa <jolsa@redhat.com>
I added this:
Fixes: 23cbb41c939a ("perf record: Move side band evlist setup to separate routine")
To help this fixe go back to a few stable kernels. Technically the
problem was introduced much earlier, when the side band thread was
added, but then this would require more cherry-picking of patches and
since we have a workaround, i.e. build with libbpf, I think this is
enough.
Applied,
- Arnaldo
> thanks,
> jirka
>
> >
> > The root cause is, evlist__add_bpf_sb_event() just returns 0 if
> > HAVE_LIBBPF_SUPPORT is not defined (inline function path). So it will
> > not create a valid evsel for side-band event.
> >
> > But perf-record still creates BPF side band thread to process the
> > side-band event, then the error happpens.
> >
> > We can reproduce this issue by removing the libelf-dev. e.g.
> > 1. apt-get remove libelf-dev
> > 2. perf record -a -- sleep 1
> >
> > root@test:~# ./perf record -a -- sleep 1
> > perf: Segmentation fault
> > Obtained 6 stack frames.
> > ./perf(+0x28eee8) [0x5562d6ef6ee8]
> > /lib/x86_64-linux-gnu/libc.so.6(+0x46210) [0x7fbfdc65f210]
> > ./perf(+0x342e74) [0x5562d6faae74]
> > ./perf(+0x257e39) [0x5562d6ebfe39]
> > /lib/x86_64-linux-gnu/libpthread.so.0(+0x9609) [0x7fbfdc990609]
> > /lib/x86_64-linux-gnu/libc.so.6(clone+0x43) [0x7fbfdc73b103]
> > Segmentation fault (core dumped)
> >
> > To fix this issue,
> >
> > 1. We either install the missing libraries to let HAVE_LIBBPF_SUPPORT
> > be defined.
> > e.g. apt-get install libelf-dev and install other related libraries.
> >
> > 2. Use this patch to skip the side-band event setup if HAVE_LIBBPF_SUPPORT
> > is not set.
> >
> > Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
> > ---
> > tools/perf/builtin-record.c | 7 +++++++
> > 1 file changed, 7 insertions(+)
> >
> > diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
> > index b6bdccd875bc..ae97f98e2753 100644
> > --- a/tools/perf/builtin-record.c
> > +++ b/tools/perf/builtin-record.c
> > @@ -1506,6 +1506,7 @@ static int record__synthesize(struct record *rec, bool tail)
> > return err;
> > }
> >
> > +#ifdef HAVE_LIBBPF_SUPPORT
> > static int record__process_signal_event(union perf_event *event __maybe_unused, void *data)
> > {
> > struct record *rec = data;
> > @@ -1550,6 +1551,12 @@ static int record__setup_sb_evlist(struct record *rec)
> >
> > return 0;
> > }
> > +#else
> > +static int record__setup_sb_evlist(struct record *rec __maybe_unused)
> > +{
> > + return 0;
> > +}
> > +#endif
> >
> > static int __cmd_record(struct record *rec, int argc, const char **argv)
> > {
> > --
> > 2.17.1
> >
>
--
- Arnaldo
next prev parent reply other threads:[~2020-08-07 12:08 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-05 2:29 [PATCH] perf record: Skip side-band event setup if HAVE_LIBBPF_SUPPORT is not set Jin Yao
2020-08-06 19:43 ` Jiri Olsa
2020-08-07 6:26 ` Jin, Yao
2020-08-07 12:08 ` Arnaldo Carvalho de Melo [this message]
2020-08-07 12:09 ` Arnaldo Carvalho de Melo
2020-08-07 12:16 ` Arnaldo Carvalho de Melo
2020-08-07 12:28 ` Arnaldo Carvalho de Melo
2020-08-10 0:35 ` Jin, Yao
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=20200807120824.GA2456573@kernel.org \
--to=acme@kernel.org \
--cc=Linux-kernel@vger.kernel.org \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=jolsa@kernel.org \
--cc=jolsa@redhat.com \
--cc=kan.liang@intel.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=yao.jin@intel.com \
--cc=yao.jin@linux.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.