diff options
| author | Ian Rogers <irogers@google.com> | 2025-08-22 17:00:24 -0700 |
|---|---|---|
| committer | Namhyung Kim <namhyung@kernel.org> | 2025-08-25 15:07:18 -0700 |
| commit | 2c369d91d0933aaff96b6b807b22363e6a38a625 (patch) | |
| tree | e22a6006aa6771373c892470e3516da2e2292404 /tools/perf/tests/sdt.c | |
| parent | perf symbol-minimal: Fix ehdr reading in filename__read_build_id (diff) | |
| download | linux-2c369d91d0933aaff96b6b807b22363e6a38a625.tar.gz linux-2c369d91d0933aaff96b6b807b22363e6a38a625.zip | |
perf symbol: Add blocking argument to filename__read_build_id
When synthesizing build-ids, for build ID mmap2 events, they will be
added for data mmaps if -d/--data is specified. The files opened for
their build IDs may block on the open causing perf to hang during
synthesis. There is some robustness in existing calls to
filename__read_build_id by checking the file path is to a regular
file, which unfortunately fails for symlinks. Rather than adding more
is_regular_file calls, switch filename__read_build_id to take a
"block" argument and specify O_NONBLOCK when this is false. The
existing is_regular_file checking callers and the event synthesis
callers are made to pass false and thereby avoiding the hang.
Fixes: 53b00ff358dc ("perf record: Make --buildid-mmap the default")
Signed-off-by: Ian Rogers <irogers@google.com>
Link: https://lore.kernel.org/r/20250823000024.724394-3-irogers@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Diffstat (limited to 'tools/perf/tests/sdt.c')
| -rw-r--r-- | tools/perf/tests/sdt.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/perf/tests/sdt.c b/tools/perf/tests/sdt.c index 93baee2eae42..6132f1af3e22 100644 --- a/tools/perf/tests/sdt.c +++ b/tools/perf/tests/sdt.c @@ -31,7 +31,7 @@ static int build_id_cache__add_file(const char *filename) struct build_id bid = { .size = 0, }; int err; - err = filename__read_build_id(filename, &bid); + err = filename__read_build_id(filename, &bid, /*block=*/true); if (err < 0) { pr_debug("Failed to read build id of %s\n", filename); return err; |
