From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Anubhav Shelat <ashelat@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>,
mpetlan@redhat.com, irogers@google.com,
linux-perf-users@vger.kernel.org, peterz@infradead.org,
mingo@redhat.com, mark.rutland@arm.com,
alexander.shishkin@linux.intel.com, jolsa@kernel.org,
adrian.hunter@intel.com, kan.liang@linux.intel.com,
dapeng1.mi@linux.intel.com, james.clark@linaro.org
Subject: Re: [PATCH] perf trace: always print return value for syscalls with set errpid
Date: Wed, 28 May 2025 15:35:24 -0300 [thread overview]
Message-ID: <aDdXbJijYfgyGEQ4@x1> (raw)
In-Reply-To: <CA+G8DhK05FPgdLhN0LVYsDUTsJou4x4BxqycbPweGYgL_b4_VQ@mail.gmail.com>
On Tue, May 27, 2025 at 12:34:34PM -0400, Anubhav Shelat wrote:
> Every time I ran perf trace I saw that the return value for only
> set_robust_list and rseq was empty, even though while stepping through
> the code the return value was 0. So I do think that these are the right
> syscalls.
> The cause of the problem is that no thread id is returned, so the logic
> skips printing the return value. The change ensures the return value
Well:
RETURN VALUE
The set_robust_list() and get_robust_list() system calls return zero when the operation is successful, an error code otherwise.
and rset return -errno on failure, so they are both not returning a pid
and should print errno when less than zero.
> always gets printed. Another solution would be to set errpid to false
> for both set_robust_list and rseq.
Can you please send a new patch with this? please add a Fixes tag as
well, for these two csets:
⬢ [acme@toolbx perf-tools-next]$ git blame tools/perf/builtin-trace.c | grep -E '"(rseq|set_robust_list)"'
0c1019e3463b263a8 (Arnaldo Carvalho de Melo 2024-09-11 16:34:16 -0300 1351) { .name = "rseq", .errpid = true,
1de5b5dcb8353f365 (Arnaldo Carvalho de Melo 2024-09-11 17:10:33 -0300 1375) { .name = "set_robust_list", .errpid = true,
⬢ [acme@toolbx perf-tools-next]$
My mistake, that was a copy'n'paste error, those '.errpid = true'
shouldn't be there, as you noticed.
The first patch from you is also valid, but due to a different reason,
as Namhyung pointed out.
So I'm applying it now.
- Arnaldo
> Best, Anubhav
> On Sun, May 18, 2025 at 2:03 PM Namhyung Kim <[1]namhyung@kernel.org>
> wrote:
>
> On Thu, Apr 03, 2025 at 12:04:12PM -0400, Anubhav Shelat wrote:
> > Currently some syscalls that have errpid set to true do not print
> a
> > return value in perf trace. The syscalls that were consistently
> > observed were set_robust_list and rseq. This is because perf
> cannot find
> > their child process. This change ensures that the return value is
> always
> > printed.
> >
> > Before:
> > 0.256 ( 0.001 ms): set_robust_list(head: 0x7f09c77dba20, len:
> 24) =
> > 0.259 ( 0.001 ms): rseq(rseq: 0x7f09c77dc0e0, rseq_len: 32,
> sig: 1392848979) =
> > After:
> > 0.270 ( 0.002 ms): set_robust_list(head: 0x7f0bb14a6a20, len:
> 24) = 0
> > 0.273 ( 0.002 ms): rseq(rseq: 0x7f0bb14a70e0, rseq_len: 32,
> sig: 1392848979) = 0
>
> I'm ok with the change but I'm not sure if they are right syscalls.
> It
> seems neither of syscalls return a thread id.
>
> Thanks,
> Namhyung
>
> >
> > Signed-off-by: Anubhav Shelat <[2]ashelat@redhat.com>
> > ---
> > tools/perf/builtin-trace.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/tools/perf/builtin-trace.c
> b/tools/perf/builtin-trace.c
> > index 6ac51925ea42..c192f0219b2b 100644
> > --- a/tools/perf/builtin-trace.c
> > +++ b/tools/perf/builtin-trace.c
> > @@ -3005,8 +3005,8 @@ errno_print: {
> > else if (sc->fmt->errpid) {
> > struct thread *child =
> machine__find_thread(trace->host, ret, ret);
> >
> > + fprintf(trace->output, "%ld", ret);
> > if (child != NULL) {
> > - fprintf(trace->output, "%ld", ret);
> > if (thread__comm_set(child))
> > fprintf(trace->output, " (%s)",
> thread__comm_str(child));
> > thread__put(child);
> > --
> > 2.48.1
> >
>
> References
>
> 1. mailto:namhyung@kernel.org
> 2. mailto:ashelat@redhat.com
prev parent reply other threads:[~2025-05-28 18:35 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-03 16:04 [PATCH] perf trace: always print return value for syscalls with set errpid Anubhav Shelat
2025-04-04 3:26 ` Howard Chu
2025-05-17 15:29 ` Howard Chu
2025-05-28 18:41 ` Arnaldo Carvalho de Melo
2025-05-29 14:35 ` Anubhav Shelat
2025-05-18 18:02 ` Namhyung Kim
[not found] ` <CA+G8DhK05FPgdLhN0LVYsDUTsJou4x4BxqycbPweGYgL_b4_VQ@mail.gmail.com>
2025-05-28 18:35 ` Arnaldo Carvalho de Melo [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=aDdXbJijYfgyGEQ4@x1 \
--to=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=ashelat@redhat.com \
--cc=dapeng1.mi@linux.intel.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=mpetlan@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.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