]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
perf tools: Include file offset and event type name in skip messages
authorArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 1 Jun 2026 18:21:20 +0000 (15:21 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 3 Jun 2026 19:31:03 +0000 (16:31 -0300)
Add the perf.data file offset and use perf_event__name() instead of raw
event type integers in the 'problem processing event, skipping it'
messages emitted by process_sample_event() callbacks across annotate,
c2c, diff, kmem, kvm, kwork, lock, report, script, and build-id.

This lets users cross-reference skipped events with 'perf report -D'
output.  Also add explicit #include "util/event.h" and <inttypes.h>
where needed to avoid depending on transitive includes.

Reviewed-by: Ian Rogers <irogers@google.com>
Assisted-by: Claude:claude-opus-4.6
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-annotate.c
tools/perf/builtin-c2c.c
tools/perf/builtin-diff.c
tools/perf/builtin-kmem.c
tools/perf/builtin-kvm.c
tools/perf/builtin-kwork.c
tools/perf/builtin-lock.c
tools/perf/builtin-report.c
tools/perf/builtin-script.c
tools/perf/util/build-id.c

index 5f450c8093c092109ee265f6b04a3c35ad0cfafc..b918f9eed5fd2441fc0988f1d24cc4a75604fa2b 100644 (file)
@@ -288,8 +288,9 @@ static int process_sample_event(const struct perf_tool *tool,
 
        addr_location__init(&al);
        if (machine__resolve(machine, &al, sample) < 0) {
-               pr_warning("problem processing %d event, skipping it.\n",
-                          event->header.type);
+               pr_warning("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n",
+                          perf_event__name(event->header.type), event->header.type,
+                          sample->file_offset);
                ret = -1;
                goto out_put;
        }
index 36f38694992386adf4b32580e8913bcea755d727..d3503be9350c03bb946dd4abcd827ca9d7c1ea4d 100644 (file)
@@ -328,8 +328,9 @@ static int process_sample_event(const struct perf_tool *tool __maybe_unused,
 
        addr_location__init(&al);
        if (machine__resolve(machine, &al, sample) < 0) {
-               pr_debug("problem processing %d event, skipping it.\n",
-                        event->header.type);
+               pr_debug("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n",
+                        perf_event__name(event->header.type), event->header.type,
+                        sample->file_offset);
                ret = -1;
                goto out;
        }
index b4ff863b304ca0467ee3f4a5a97f1ade47f1f050..9592f44b6545bab668ad8a63c2c0ac736dee6195 100644 (file)
@@ -409,8 +409,9 @@ static int diff__process_sample_event(const struct perf_tool *tool,
 
        addr_location__init(&al);
        if (machine__resolve(machine, &al, sample) < 0) {
-               pr_warning("problem processing %d event, skipping it.\n",
-                          event->header.type);
+               pr_warning("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n",
+                          perf_event__name(event->header.type), event->header.type,
+                          sample->file_offset);
                ret = -1;
                goto out;
        }
@@ -436,7 +437,8 @@ static int diff__process_sample_event(const struct perf_tool *tool,
        case COMPUTE_STREAM:
                if (hist_entry_iter__add(&iter, &al, PERF_MAX_STACK_DEPTH,
                                         NULL)) {
-                       pr_debug("problem adding hist entry, skipping event\n");
+                       pr_debug("problem adding hist entry at offset %#" PRIx64 ", skipping event\n",
+                                sample->file_offset);
                        goto out;
                }
                break;
index 33585e353efe56cc4f4c9ecd8efe38e311566baa..e1b2f5bc1ba8d8877b23771c26e35c040a2e426d 100644 (file)
@@ -22,6 +22,7 @@
 #include "util/cpumap.h"
 
 #include "util/debug.h"
+#include "util/event.h"
 #include "util/string2.h"
 #include "util/util.h"
 
@@ -987,8 +988,9 @@ static int process_sample_event(const struct perf_tool *tool __maybe_unused,
                                                        sample->tid);
 
        if (thread == NULL) {
-               pr_debug("problem processing %d event, skipping it.\n",
-                        event->header.type);
+               pr_debug("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n",
+                        perf_event__name(event->header.type), event->header.type,
+                        sample->file_offset);
                return -1;
        }
 
index dd2ed21596aa59f951ecb26e18211178d55591ab..394302ebdb1610773ffb2a9023be0702513756b8 100644 (file)
@@ -22,6 +22,7 @@
 #include "util/synthetic-events.h"
 #include "util/top.h"
 #include "util/data.h"
+#include "util/event.h"
 #include "util/ordered-events.h"
 #include "util/kvm-stat.h"
 #include "util/util.h"
@@ -1141,14 +1142,16 @@ static int process_sample_event(const struct perf_tool *tool,
                return 0;
 
        if (machine__resolve(machine, &kvm->al, sample) < 0) {
-               pr_warning("Fail to resolve address location, skip sample.\n");
+               pr_warning("WARNING: at offset %#" PRIx64 ": fail to resolve address location, skipping sample\n",
+                          sample->file_offset);
                return 0;
        }
 
        thread = machine__findnew_thread(machine, sample->pid, sample->tid);
        if (thread == NULL) {
-               pr_debug("problem processing %d event, skipping it.\n",
-                       event->header.type);
+               pr_debug("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n",
+                        perf_event__name(event->header.type), event->header.type,
+                        sample->file_offset);
                return -1;
        }
 
index 99dc293a0744726ef0ba1b2acddefdd48d561646..110de3507d48160c9fb3f886aa5d9a7aa1923e71 100644 (file)
@@ -9,6 +9,7 @@
 #include "perf.h"
 
 #include "util/data.h"
+#include "util/event.h"
 #include "util/evlist.h"
 #include "util/evsel.h"
 #include "util/header.h"
@@ -897,7 +898,8 @@ static int timehist_exit_event(struct perf_kwork *kwork,
 
        addr_location__init(&al);
        if (machine__resolve(machine, &al, sample) < 0) {
-               pr_debug("Problem processing event, skipping it\n");
+               pr_debug("problem processing event at offset %#" PRIx64 ", skipping it\n",
+                        sample->file_offset);
                ret = -1;
                goto out;
        }
index 94a8c35abb0bc991535ef4873463b921baf8bf62..5841d43be971841476c31d734faad06819649d57 100644 (file)
@@ -21,6 +21,7 @@
 #include "util/tracepoint.h"
 
 #include "util/debug.h"
+#include "util/event.h"
 #include "util/session.h"
 #include "util/tool.h"
 #include "util/data.h"
@@ -1433,8 +1434,9 @@ static int process_sample_event(const struct perf_tool *tool __maybe_unused,
                                                        sample->tid);
 
        if (thread == NULL) {
-               pr_debug("problem processing %d event, skipping it.\n",
-                       event->header.type);
+               pr_debug("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n",
+                        perf_event__name(event->header.type), event->header.type,
+                        sample->file_offset);
                return -1;
        }
 
index 973d97af85019e6ee41d5f0eea6c2f569f8a07b1..cd052aa78132b65faf3641f4985693237b5f0850 100644 (file)
@@ -27,6 +27,7 @@
 
 #include "perf.h"
 #include "util/debug.h"
+#include "util/event.h"
 #include "util/evlist.h"
 #include "util/evsel.h"
 #include "util/evswitch.h"
@@ -284,8 +285,9 @@ static int process_sample_event(const struct perf_tool *tool,
 
        addr_location__init(&al);
        if (machine__resolve(machine, &al, sample) < 0) {
-               pr_debug("problem processing %d event, skipping it.\n",
-                        event->header.type);
+               pr_debug("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n",
+                        perf_event__name(event->header.type), event->header.type,
+                        sample->file_offset);
                ret = -1;
                goto out_put;
        }
@@ -332,7 +334,8 @@ static int process_sample_event(const struct perf_tool *tool,
 
        ret = hist_entry_iter__add(&iter, &al, rep->max_stack, rep);
        if (ret < 0)
-               pr_debug("problem adding hist entry, skipping event\n");
+               pr_debug("problem adding hist entry at offset %#" PRIx64 ", skipping event\n",
+                        sample->file_offset);
 out_put:
        addr_location__exit(&al);
        return ret;
index 5124edf2b7a692b20ca36a0e64c990c4bb204f5a..f4aa255fc3297f90655c1ac7aa340187cb409503 100644 (file)
@@ -2693,8 +2693,9 @@ static int process_sample_event(const struct perf_tool *tool,
                goto out_put;
 
        if (!al.thread && machine__resolve(machine, &al, sample) < 0) {
-               pr_err("problem processing %d event, skipping it.\n",
-                      event->header.type);
+               pr_err("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n",
+                      perf_event__name(event->header.type), event->header.type,
+                      sample->file_offset);
                ret = -1;
                goto out_put;
        }
@@ -2775,8 +2776,9 @@ static int process_deferred_sample_event(const struct perf_tool *tool,
                goto out_put;
 
        if (machine__resolve(machine, &al, sample) < 0) {
-               pr_err("problem processing %d event, skipping it.\n",
-                      event->header.type);
+               pr_err("problem processing %s (%u) event at offset %#" PRIx64 ", skipping it.\n",
+                      perf_event__name(event->header.type), event->header.type,
+                      sample->file_offset);
                ret = -1;
                goto out_put;
        }
index af4d874f13810ffe4799208e86956a737c5655db..8c0a9ae932aa5798a7554f911e40dd3f9f045a62 100644 (file)
@@ -10,6 +10,7 @@
 #include "util.h" // lsdir(), mkdir_p(), rm_rf()
 #include <dirent.h>
 #include <errno.h>
+#include <inttypes.h>
 #include <stdio.h>
 #include <sys/stat.h>
 #include <sys/types.h>
@@ -62,8 +63,8 @@ int build_id__mark_dso_hit(const struct perf_tool *tool __maybe_unused,
                                                        sample->tid);
 
        if (thread == NULL) {
-               pr_err("problem processing %d event, skipping it.\n",
-                       event->header.type);
+               pr_err("problem processing %s event at offset %#" PRIx64 ", skipping it.\n",
+                      perf_event__name(event->header.type), sample->file_offset);
                return -1;
        }