From: sashiko-bot@kernel.org
To: "Namhyung Kim" <namhyung@kernel.org>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v2 08/10] perf symbol: Do not set binary type from symtab type
Date: Tue, 06 Oct 2026 23:57:13 +0000 [thread overview]
Message-ID: <sashiko-outbox-162539@kernel.org> (raw)
In-Reply-To: <20261006234315.920817-9-namhyung@kernel.org>
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [High] perf: data-only DSOs fail to open due to strict .text section requirement
- [High] perf: compat offline DWARF unwinding broken due to missing binary_type
- [Medium] perf: redundant double-decompression of compressed kernel modules
--
commit 0528580a893b2b2066f28586347977aa4bf1e268
Author: Namhyung Kim <namhyung@kernel.org>
perf symbol: Do not set binary type from symtab type
The DSO binary type is to access the binary (e.g. instruction) data
while symtab type is for the symbol table. They may or may not be in
the same file. We should track them separately and correctly.
> diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
> index 389dbd7e5192f..1175cb60f8206 100644
> --- a/tools/perf/util/symbol.c
> +++ b/tools/perf/util/symbol.c
> @@ -1956,19 +1956,6 @@ int dso__load(struct dso *dso, struct map *map)
>
> if (next_slot) {
> ss_pos++;
> -
> - /*
> - * The binary type is used to find the file containing
> - * the executed instructions, so prefer the types that
> - * refer to the actual object over debug-only files such
> - * as DSO_BINARY_TYPE__DEBUGLINK.
> - */
> - if (dso__binary_type(dso) == DSO_BINARY_TYPE__NOT_FOUND ||
> - symtab_type == DSO_BINARY_TYPE__BUILD_ID_CACHE ||
> - (symtab_type == DSO_BINARY_TYPE__SYSTEM_PATH_DSO &&
> - dso__binary_type(dso) != DSO_BINARY_TYPE__BUILD_ID_CACHE))
> - dso__set_binary_type(dso, symtab_type);
> -
[Severity: High]
Does removing this fallback prevent opening data-only DSOs?
Without this early assignment, DSOs remain as DSO_BINARY_TYPE__NOT_FOUND.
Any profiling workload attempting to access symbols in a DSO without
executable code might hit this path:
try_to_open_dso()
__dso__find_binary_type()
filename__has_section(path, ".text")
Because the ".text" check fails for data-only DSOs, the binary type remains
DSO_BINARY_TYPE__NOT_FOUND. This bypasses the correct opening logic in
open_dso() and permanently marks the DSO with DSO_DATA_STATUS_ERROR. Can we
still open data-only DSOs (like eBPF maps or data-only kernel modules)
after this change?
[Severity: Medium]
Without the early binary type assignment, does this introduce redundant
decompression for compressed kernel modules?
When try_to_open_dso() is called for a compressed kernel module, it first
calls __dso__find_binary_type(), which uses dso__get_filename() to fully
decompress the module to a temporary file just to check for a ".text"
section, and then unlinks it.
Immediately following this, try_to_open_dso() calls open_dso() which again
calls dso__get_filename(), triggering a second complete decompression of the
exact same module. Can this cause severe performance degradation when
processing profiles containing compressed kernel modules?
[Severity: High]
Could this removal also break offline DWARF stack unwinding for compat tasks?
Because user-space maps now have a binary type of DSO_BINARY_TYPE__NOT_FOUND
during early processing, when thread__e_machine_endian() calls
dso__e_machine_endian() to determine the architecture, it hits the fallback:
tools/perf/util/dso.c:dso__e_machine_endian() {
...
switch (dso__binary_type(dso)) {
...
case DSO_BINARY_TYPE__NOT_FOUND:
default:
if (e_flags)
*e_flags = 0;
return EM_NONE;
}
}
It immediately fails and returns EM_NONE without attempting to open the file.
Consequently, thread__e_machine_endian() fails to extract the architecture
from any map and falls back to perf_env__e_machine(), which incorrectly
applies the host architecture to the compat thread.
> if (syms_ss && runtime_ss)
> break;
> } else {
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261006234315.920817-1-namhyung@kernel.org?part=8
next prev parent reply other threads:[~2026-10-06 23:57 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-06 23:43 [PATCH v2 00/10] perf symbol: Properly set DSO binary/symtab types Namhyung Kim
2026-10-06 23:43 ` [PATCH v2 01/10] perf tools: Remove redundant dso data init Namhyung Kim
2026-10-06 23:49 ` sashiko-bot
2026-10-06 23:43 ` [PATCH v2 02/10] perf tools: Try linked debug files for DSO debug info Namhyung Kim
2026-10-06 23:54 ` sashiko-bot
2026-10-06 23:43 ` [PATCH v2 03/10] perf symbol: Update symtab type of vmlinux from build-id cache Namhyung Kim
2026-10-06 23:54 ` sashiko-bot
2026-10-06 23:43 ` [PATCH v2 04/10] perf symbol: Set binary/symtab type for split kallsyms Namhyung Kim
2026-10-06 23:58 ` sashiko-bot
2026-10-06 23:43 ` [PATCH v2 05/10] perf symbol: Set dso symtab type for libbfd Namhyung Kim
2026-10-06 23:57 ` sashiko-bot
2026-10-06 23:43 ` [PATCH v2 06/10] perf tools: Factor out dso__find_binary_type() Namhyung Kim
2026-10-07 0:04 ` sashiko-bot
2026-10-06 23:43 ` [PATCH v2 07/10] perf symbol: Set binary type for JIT map DSOs Namhyung Kim
2026-10-06 23:51 ` sashiko-bot
2026-10-06 23:43 ` [PATCH v2 08/10] perf symbol: Do not set binary type from symtab type Namhyung Kim
2026-10-06 23:57 ` sashiko-bot [this message]
2026-10-06 23:43 ` [PATCH v2 09/10] perf annotate: Simplify symbol__disassemble() with dso binary_type Namhyung Kim
2026-10-07 0:01 ` sashiko-bot
2026-10-06 23:43 ` [PATCH v2 10/10] perf test: Fix dso data tests Namhyung Kim
2026-10-06 23:59 ` sashiko-bot
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=sashiko-outbox-162539@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=namhyung@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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