Print log information in ordered event processing so that the cause of
finished round failing is clearer. Print the event name along with its
number when an event isn't processed. Add extra detail about where the
failure happened.
Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/util/session.c | 28 ++++++++++++++++++++--------
1 file changed, 20 insertions(+), 8 deletions(-)
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 4b465abfa36c..7f3ffbe633af 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -131,10 +131,17 @@ static int ordered_events__deliver_event(struct ordered_events *oe,
{
struct perf_session *session = container_of(oe, struct perf_session,
ordered_events);
+ int ret = perf_session__deliver_event(session, event->event,
+ session->tool, event->file_offset,
+ event->file_path);
- return perf_session__deliver_event(session, event->event,
- session->tool, event->file_offset,
- event->file_path);
+ if (ret) {
+ pr_err("%#" PRIx64 " [%#x]: ordered event processing failed (%d) for event of type: %s (%d)\n",
+ event->file_offset, event->event->header.size, ret,
+ perf_event__name(event->event->header.type),
+ event->event->header.type);
+ }
+ return ret;
}
struct perf_session *__perf_session__new(struct perf_data *data,
@@ -2110,8 +2117,10 @@ static int __perf_session__process_pipe_events(struct perf_session *session)
}
if ((skip = perf_session__process_event(session, event, head, "pipe")) < 0) {
- pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n",
- head, event->header.size, event->header.type);
+ pr_err("%#" PRIx64 " [%#x]: piped event processing failed for event of type: %s (%d)\n",
+ head, event->header.size,
+ perf_event__name(event->header.type),
+ event->header.type);
err = -EINVAL;
goto out_err;
}
@@ -2225,8 +2234,10 @@ static int __perf_session__process_decomp_events(struct perf_session *session)
if (size < sizeof(struct perf_event_header) ||
(skip = perf_session__process_event(session, event, decomp->file_pos,
decomp->file_path)) < 0) {
- pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n",
- decomp->file_pos + decomp->head, event->header.size, event->header.type);
+ pr_err("%#" PRIx64 " [%#x]: decompress event processing failed for event of type: %s (%d)\n",
+ decomp->file_pos + decomp->head, event->header.size,
+ perf_event__name(event->header.type),
+ event->header.type);
return -EINVAL;
}
@@ -2382,8 +2393,9 @@ reader__read_event(struct reader *rd, struct perf_session *session,
if (size < sizeof(struct perf_event_header) ||
(skip = rd->process(session, event, rd->file_pos, rd->path)) < 0) {
errno = -skip;
- pr_err("%#" PRIx64 " [%#x]: failed to process type: %d [%m]\n",
+ pr_err("%#" PRIx64 " [%#x]: processing failed for event of type: %s (%d) [%m]\n",
rd->file_offset + rd->head, event->header.size,
+ perf_event__name(event->header.type),
event->header.type);
err = skip;
goto out;
--
2.53.0.414.gf7e9f6c205-goog
On Wed, Feb 25, 2026 at 05:35:32PM -0800, Ian Rogers wrote:
> Print log information in ordered event processing so that the cause of
> finished round failing is clearer. Print the event name along with its
> number when an event isn't processed. Add extra detail about where the
> failure happened.
It'd be nice if you show messages before and after the change.
>
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
> tools/perf/util/session.c | 28 ++++++++++++++++++++--------
> 1 file changed, 20 insertions(+), 8 deletions(-)
>
> diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
> index 4b465abfa36c..7f3ffbe633af 100644
> --- a/tools/perf/util/session.c
> +++ b/tools/perf/util/session.c
> @@ -131,10 +131,17 @@ static int ordered_events__deliver_event(struct ordered_events *oe,
> {
> struct perf_session *session = container_of(oe, struct perf_session,
> ordered_events);
> + int ret = perf_session__deliver_event(session, event->event,
Slightly unaligned.. it seems to have 2 spaces.
Thanks,
Namhyung
> + session->tool, event->file_offset,
> + event->file_path);
>
> - return perf_session__deliver_event(session, event->event,
> - session->tool, event->file_offset,
> - event->file_path);
> + if (ret) {
> + pr_err("%#" PRIx64 " [%#x]: ordered event processing failed (%d) for event of type: %s (%d)\n",
> + event->file_offset, event->event->header.size, ret,
> + perf_event__name(event->event->header.type),
> + event->event->header.type);
> + }
> + return ret;
> }
>
> struct perf_session *__perf_session__new(struct perf_data *data,
> @@ -2110,8 +2117,10 @@ static int __perf_session__process_pipe_events(struct perf_session *session)
> }
>
> if ((skip = perf_session__process_event(session, event, head, "pipe")) < 0) {
> - pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n",
> - head, event->header.size, event->header.type);
> + pr_err("%#" PRIx64 " [%#x]: piped event processing failed for event of type: %s (%d)\n",
> + head, event->header.size,
> + perf_event__name(event->header.type),
> + event->header.type);
> err = -EINVAL;
> goto out_err;
> }
> @@ -2225,8 +2234,10 @@ static int __perf_session__process_decomp_events(struct perf_session *session)
> if (size < sizeof(struct perf_event_header) ||
> (skip = perf_session__process_event(session, event, decomp->file_pos,
> decomp->file_path)) < 0) {
> - pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n",
> - decomp->file_pos + decomp->head, event->header.size, event->header.type);
> + pr_err("%#" PRIx64 " [%#x]: decompress event processing failed for event of type: %s (%d)\n",
> + decomp->file_pos + decomp->head, event->header.size,
> + perf_event__name(event->header.type),
> + event->header.type);
> return -EINVAL;
> }
>
> @@ -2382,8 +2393,9 @@ reader__read_event(struct reader *rd, struct perf_session *session,
> if (size < sizeof(struct perf_event_header) ||
> (skip = rd->process(session, event, rd->file_pos, rd->path)) < 0) {
> errno = -skip;
> - pr_err("%#" PRIx64 " [%#x]: failed to process type: %d [%m]\n",
> + pr_err("%#" PRIx64 " [%#x]: processing failed for event of type: %s (%d) [%m]\n",
> rd->file_offset + rd->head, event->header.size,
> + perf_event__name(event->header.type),
> event->header.type);
> err = skip;
> goto out;
> --
> 2.53.0.414.gf7e9f6c205-goog
>
© 2016 - 2026 Red Hat, Inc.