* [PATCH v2 0/3] perf addr2line: Rework disable_add2line_warn
@ 2026-04-02 8:01 Thomas Richter
2026-04-02 8:01 ` [PATCH v2 1/3] perf config: Rename symbol_conf::disable_add2line_warn Thomas Richter
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Thomas Richter @ 2026-04-02 8:01 UTC (permalink / raw)
To: linux-kernel, linux-s390, linux-perf-users, acme, namhyung,
irogers
Cc: agordeev, gor, sumanthk, hca, japo
Introduce configurable addr2line_disable_warn entry in the .perfconfig
file. Clean up addr2line configuration.
V1 --> V2: Update perf-config documentation.
Patch 1:
Rename disable_add2line_warn to addr2line_disable_warn (with 'r')
and start name with prefix addr2line_ to make it consistent with
other addr2line_xxx configuration parameters.
Patch 2:
Enable symbol_conf::addr2line_disable_warn set via config file.
Patch 3:
Remove global variable addr2line_timeout_ms and make it a member
of struct::symbol_conf. Update perf-config documentation.
Thomas Richter (3):
perf config: Rename symbol_conf::disable_add2line_warn
perf config: Make symbol_conf::addr2line_disable_warn configurable
perf addr2line: Remove global variable addr2line_timeout_ms
tools/perf/Documentation/perf-config.txt | 6 ++++++
tools/perf/builtin-diff.c | 4 ++--
tools/perf/util/addr2line.c | 20 ++++++++++----------
tools/perf/util/addr2line.h | 2 --
tools/perf/util/block-info.c | 2 +-
tools/perf/util/config.c | 6 ++++--
tools/perf/util/libbfd.c | 2 +-
tools/perf/util/symbol_conf.h | 3 ++-
8 files changed, 26 insertions(+), 19 deletions(-)
--
2.53.0
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v2 1/3] perf config: Rename symbol_conf::disable_add2line_warn 2026-04-02 8:01 [PATCH v2 0/3] perf addr2line: Rework disable_add2line_warn Thomas Richter @ 2026-04-02 8:01 ` Thomas Richter 2026-04-03 2:08 ` Namhyung Kim 2026-04-02 8:01 ` [PATCH v2 2/3] perf config: Make symbol_conf::addr2line_disable_warn configurable Thomas Richter 2026-04-02 8:01 ` [PATCH v2 3/3] perf addr2line: Remove global variable addr2line_timeout_ms Thomas Richter 2 siblings, 1 reply; 7+ messages in thread From: Thomas Richter @ 2026-04-02 8:01 UTC (permalink / raw) To: linux-kernel, linux-s390, linux-perf-users, acme, namhyung, irogers Cc: agordeev, gor, sumanthk, hca, japo, Thomas Richter Rename member symbol_conf::disable_add2line_warn to symbol_conf::addr2line_disable_warn to make it consistent with other addr2line_xxx constants. No functional change. Fixes: 257046a36750a ("perf srcline: Fallback between addr2line implementations") Cc: Ian Rogers <irogers@google.com> Signed-off-by: Thomas Richter <tmricht@linux.ibm.com> Reviewed-by: Ian Rogers <irogers@google.com> --- tools/perf/builtin-diff.c | 4 ++-- tools/perf/util/addr2line.c | 12 ++++++------ tools/perf/util/block-info.c | 2 +- tools/perf/util/libbfd.c | 2 +- tools/perf/util/symbol_conf.h | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c index 69069926dd0b..35d599d5c9fa 100644 --- a/tools/perf/builtin-diff.c +++ b/tools/perf/builtin-diff.c @@ -1352,7 +1352,7 @@ static int cycles_printf(struct hist_entry *he, struct hist_entry *pair, /* * Avoid printing the warning "addr2line_init failed for ..." */ - symbol_conf.disable_add2line_warn = true; + symbol_conf.addr2line_disable_warn = true; bi = block_he->block_info; @@ -1986,7 +1986,7 @@ int cmd_diff(int argc, const char **argv) if (compute == COMPUTE_STREAM) { symbol_conf.show_branchflag_count = true; - symbol_conf.disable_add2line_warn = true; + symbol_conf.addr2line_disable_warn = true; callchain_param.mode = CHAIN_FLAT; callchain_param.key = CCKEY_SRCLINE; callchain_param.branch_callstack = 1; diff --git a/tools/perf/util/addr2line.c b/tools/perf/util/addr2line.c index 31c0391fffa3..e9f084db0802 100644 --- a/tools/perf/util/addr2line.c +++ b/tools/perf/util/addr2line.c @@ -123,7 +123,7 @@ static enum cmd_a2l_style cmd_addr2line_configure(struct child_process *a2l, con lines = 3; pr_debug3("Detected binutils addr2line style\n"); } else { - if (!symbol_conf.disable_add2line_warn) { + if (!symbol_conf.addr2line_disable_warn) { char *output = NULL; size_t output_len; @@ -310,7 +310,7 @@ int cmd__addr2line(const char *dso_name, u64 addr, } if (a2l == NULL) { - if (!symbol_conf.disable_add2line_warn) + if (!symbol_conf.addr2line_disable_warn) pr_warning("%s %s: addr2line_subprocess_init failed\n", __func__, dso_name); goto out; } @@ -330,7 +330,7 @@ int cmd__addr2line(const char *dso_name, u64 addr, len = snprintf(buf, sizeof(buf), "%016"PRIx64"\n,\n", addr); written = len > 0 ? write(a2l->in, buf, len) : -1; if (written != len) { - if (!symbol_conf.disable_add2line_warn) + if (!symbol_conf.addr2line_disable_warn) pr_warning("%s %s: could not send request\n", __func__, dso_name); goto out; } @@ -339,7 +339,7 @@ int cmd__addr2line(const char *dso_name, u64 addr, switch (read_addr2line_record(&io, cmd_a2l_style, dso_name, addr, /*first=*/true, &record_function, &record_filename, &record_line_nr)) { case -1: - if (!symbol_conf.disable_add2line_warn) + if (!symbol_conf.addr2line_disable_warn) pr_warning("%s %s: could not read first record\n", __func__, dso_name); goto out; case 0: @@ -355,7 +355,7 @@ int cmd__addr2line(const char *dso_name, u64 addr, /*addr=*/1, /*first=*/true, NULL, NULL, NULL)) { case -1: - if (!symbol_conf.disable_add2line_warn) + if (!symbol_conf.addr2line_disable_warn) pr_warning("%s %s: could not read sentinel record\n", __func__, dso_name); break; @@ -363,7 +363,7 @@ int cmd__addr2line(const char *dso_name, u64 addr, /* The sentinel as expected. */ break; default: - if (!symbol_conf.disable_add2line_warn) + if (!symbol_conf.addr2line_disable_warn) pr_warning("%s %s: unexpected record instead of sentinel", __func__, dso_name); break; diff --git a/tools/perf/util/block-info.c b/tools/perf/util/block-info.c index 649392bee7ed..8d3a9a661f26 100644 --- a/tools/perf/util/block-info.c +++ b/tools/perf/util/block-info.c @@ -303,7 +303,7 @@ static int block_range_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp, char buf[128]; char *start_line, *end_line; - symbol_conf.disable_add2line_warn = true; + symbol_conf.addr2line_disable_warn = true; start_line = map__srcline(he->ms.map, bi->sym->start + bi->start, he->ms.sym); diff --git a/tools/perf/util/libbfd.c b/tools/perf/util/libbfd.c index 63ea3fb53e77..c1c12308cc12 100644 --- a/tools/perf/util/libbfd.c +++ b/tools/perf/util/libbfd.c @@ -233,7 +233,7 @@ int libbfd__addr2line(const char *dso_name, u64 addr, } if (a2l == NULL) { - if (!symbol_conf.disable_add2line_warn) + if (!symbol_conf.addr2line_disable_warn) pr_warning("addr2line_init failed for %s\n", dso_name); return 0; } diff --git a/tools/perf/util/symbol_conf.h b/tools/perf/util/symbol_conf.h index ac1b444a8fd8..21a1f096d4f0 100644 --- a/tools/perf/util/symbol_conf.h +++ b/tools/perf/util/symbol_conf.h @@ -51,7 +51,7 @@ struct symbol_conf { report_block, report_individual_block, inline_name, - disable_add2line_warn, + addr2line_disable_warn, no_buildid_mmap2, guest_code, lazy_load_kernel_maps, -- 2.53.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/3] perf config: Rename symbol_conf::disable_add2line_warn 2026-04-02 8:01 ` [PATCH v2 1/3] perf config: Rename symbol_conf::disable_add2line_warn Thomas Richter @ 2026-04-03 2:08 ` Namhyung Kim 0 siblings, 0 replies; 7+ messages in thread From: Namhyung Kim @ 2026-04-03 2:08 UTC (permalink / raw) To: Thomas Richter Cc: linux-kernel, linux-s390, linux-perf-users, acme, irogers, agordeev, gor, sumanthk, hca, japo On Thu, Apr 02, 2026 at 10:01:57AM +0200, Thomas Richter wrote: > Rename member symbol_conf::disable_add2line_warn to > symbol_conf::addr2line_disable_warn to make it consistent with other > addr2line_xxx constants. > No functional change. > > Fixes: 257046a36750a ("perf srcline: Fallback between addr2line implementations") I'm not sure if we want it for typo fixes. Thanks, Namhyung > Cc: Ian Rogers <irogers@google.com> > Signed-off-by: Thomas Richter <tmricht@linux.ibm.com> > Reviewed-by: Ian Rogers <irogers@google.com> > --- > tools/perf/builtin-diff.c | 4 ++-- > tools/perf/util/addr2line.c | 12 ++++++------ > tools/perf/util/block-info.c | 2 +- > tools/perf/util/libbfd.c | 2 +- > tools/perf/util/symbol_conf.h | 2 +- > 5 files changed, 11 insertions(+), 11 deletions(-) > > diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c > index 69069926dd0b..35d599d5c9fa 100644 > --- a/tools/perf/builtin-diff.c > +++ b/tools/perf/builtin-diff.c > @@ -1352,7 +1352,7 @@ static int cycles_printf(struct hist_entry *he, struct hist_entry *pair, > /* > * Avoid printing the warning "addr2line_init failed for ..." > */ > - symbol_conf.disable_add2line_warn = true; > + symbol_conf.addr2line_disable_warn = true; > > bi = block_he->block_info; > > @@ -1986,7 +1986,7 @@ int cmd_diff(int argc, const char **argv) > > if (compute == COMPUTE_STREAM) { > symbol_conf.show_branchflag_count = true; > - symbol_conf.disable_add2line_warn = true; > + symbol_conf.addr2line_disable_warn = true; > callchain_param.mode = CHAIN_FLAT; > callchain_param.key = CCKEY_SRCLINE; > callchain_param.branch_callstack = 1; > diff --git a/tools/perf/util/addr2line.c b/tools/perf/util/addr2line.c > index 31c0391fffa3..e9f084db0802 100644 > --- a/tools/perf/util/addr2line.c > +++ b/tools/perf/util/addr2line.c > @@ -123,7 +123,7 @@ static enum cmd_a2l_style cmd_addr2line_configure(struct child_process *a2l, con > lines = 3; > pr_debug3("Detected binutils addr2line style\n"); > } else { > - if (!symbol_conf.disable_add2line_warn) { > + if (!symbol_conf.addr2line_disable_warn) { > char *output = NULL; > size_t output_len; > > @@ -310,7 +310,7 @@ int cmd__addr2line(const char *dso_name, u64 addr, > } > > if (a2l == NULL) { > - if (!symbol_conf.disable_add2line_warn) > + if (!symbol_conf.addr2line_disable_warn) > pr_warning("%s %s: addr2line_subprocess_init failed\n", __func__, dso_name); > goto out; > } > @@ -330,7 +330,7 @@ int cmd__addr2line(const char *dso_name, u64 addr, > len = snprintf(buf, sizeof(buf), "%016"PRIx64"\n,\n", addr); > written = len > 0 ? write(a2l->in, buf, len) : -1; > if (written != len) { > - if (!symbol_conf.disable_add2line_warn) > + if (!symbol_conf.addr2line_disable_warn) > pr_warning("%s %s: could not send request\n", __func__, dso_name); > goto out; > } > @@ -339,7 +339,7 @@ int cmd__addr2line(const char *dso_name, u64 addr, > switch (read_addr2line_record(&io, cmd_a2l_style, dso_name, addr, /*first=*/true, > &record_function, &record_filename, &record_line_nr)) { > case -1: > - if (!symbol_conf.disable_add2line_warn) > + if (!symbol_conf.addr2line_disable_warn) > pr_warning("%s %s: could not read first record\n", __func__, dso_name); > goto out; > case 0: > @@ -355,7 +355,7 @@ int cmd__addr2line(const char *dso_name, u64 addr, > /*addr=*/1, /*first=*/true, > NULL, NULL, NULL)) { > case -1: > - if (!symbol_conf.disable_add2line_warn) > + if (!symbol_conf.addr2line_disable_warn) > pr_warning("%s %s: could not read sentinel record\n", > __func__, dso_name); > break; > @@ -363,7 +363,7 @@ int cmd__addr2line(const char *dso_name, u64 addr, > /* The sentinel as expected. */ > break; > default: > - if (!symbol_conf.disable_add2line_warn) > + if (!symbol_conf.addr2line_disable_warn) > pr_warning("%s %s: unexpected record instead of sentinel", > __func__, dso_name); > break; > diff --git a/tools/perf/util/block-info.c b/tools/perf/util/block-info.c > index 649392bee7ed..8d3a9a661f26 100644 > --- a/tools/perf/util/block-info.c > +++ b/tools/perf/util/block-info.c > @@ -303,7 +303,7 @@ static int block_range_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp, > char buf[128]; > char *start_line, *end_line; > > - symbol_conf.disable_add2line_warn = true; > + symbol_conf.addr2line_disable_warn = true; > > start_line = map__srcline(he->ms.map, bi->sym->start + bi->start, > he->ms.sym); > diff --git a/tools/perf/util/libbfd.c b/tools/perf/util/libbfd.c > index 63ea3fb53e77..c1c12308cc12 100644 > --- a/tools/perf/util/libbfd.c > +++ b/tools/perf/util/libbfd.c > @@ -233,7 +233,7 @@ int libbfd__addr2line(const char *dso_name, u64 addr, > } > > if (a2l == NULL) { > - if (!symbol_conf.disable_add2line_warn) > + if (!symbol_conf.addr2line_disable_warn) > pr_warning("addr2line_init failed for %s\n", dso_name); > return 0; > } > diff --git a/tools/perf/util/symbol_conf.h b/tools/perf/util/symbol_conf.h > index ac1b444a8fd8..21a1f096d4f0 100644 > --- a/tools/perf/util/symbol_conf.h > +++ b/tools/perf/util/symbol_conf.h > @@ -51,7 +51,7 @@ struct symbol_conf { > report_block, > report_individual_block, > inline_name, > - disable_add2line_warn, > + addr2line_disable_warn, > no_buildid_mmap2, > guest_code, > lazy_load_kernel_maps, > -- > 2.53.0 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 2/3] perf config: Make symbol_conf::addr2line_disable_warn configurable 2026-04-02 8:01 [PATCH v2 0/3] perf addr2line: Rework disable_add2line_warn Thomas Richter 2026-04-02 8:01 ` [PATCH v2 1/3] perf config: Rename symbol_conf::disable_add2line_warn Thomas Richter @ 2026-04-02 8:01 ` Thomas Richter 2026-04-03 2:12 ` Namhyung Kim 2026-04-02 8:01 ` [PATCH v2 3/3] perf addr2line: Remove global variable addr2line_timeout_ms Thomas Richter 2 siblings, 1 reply; 7+ messages in thread From: Thomas Richter @ 2026-04-02 8:01 UTC (permalink / raw) To: linux-kernel, linux-s390, linux-perf-users, acme, namhyung, irogers Cc: agordeev, gor, sumanthk, hca, japo, Thomas Richter Make symbol_conf::addr2line_disable_warn configurable by reading the perfconfig file. Use section core and addr2line-disable-warn = value. Example: # perf config -l core.addr2line-timeout=500 core.addr2line-disable-warn=1 # Signed-off-by: Thomas Richter <tmricht@linux.ibm.com> Reviewed-by: Ian Rogers <irogers@google.com> Cc: Ian Rogers <irogers@google.com> --- tools/perf/util/config.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c index 0452fbc6c085..31541e03aab7 100644 --- a/tools/perf/util/config.c +++ b/tools/perf/util/config.c @@ -461,6 +461,9 @@ static int perf_default_core_config(const char *var, const char *value) if (!strcmp(var, "core.addr2line-timeout")) addr2line_timeout_ms = strtoul(value, NULL, 10); + if (!strcmp(var, "core.addr2line-disable-warn")) + symbol_conf.addr2line_disable_warn = strtoul(value, NULL, 10); + /* Add other config variables here. */ return 0; } -- 2.53.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] perf config: Make symbol_conf::addr2line_disable_warn configurable 2026-04-02 8:01 ` [PATCH v2 2/3] perf config: Make symbol_conf::addr2line_disable_warn configurable Thomas Richter @ 2026-04-03 2:12 ` Namhyung Kim 0 siblings, 0 replies; 7+ messages in thread From: Namhyung Kim @ 2026-04-03 2:12 UTC (permalink / raw) To: Thomas Richter Cc: linux-kernel, linux-s390, linux-perf-users, acme, irogers, agordeev, gor, sumanthk, hca, japo On Thu, Apr 02, 2026 at 10:01:58AM +0200, Thomas Richter wrote: > Make symbol_conf::addr2line_disable_warn configurable by reading > the perfconfig file. Use section core and addr2line-disable-warn = > value. I think it's better to have it under "report" or something. But it seems we already have one in the "core" section. > > Example: > # perf config -l > core.addr2line-timeout=500 > core.addr2line-disable-warn=1 > # > > Signed-off-by: Thomas Richter <tmricht@linux.ibm.com> > Reviewed-by: Ian Rogers <irogers@google.com> > Cc: Ian Rogers <irogers@google.com> > --- > tools/perf/util/config.c | 3 +++ > 1 file changed, 3 insertions(+) It'd be great if you add documentation in the same change. > > diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c > index 0452fbc6c085..31541e03aab7 100644 > --- a/tools/perf/util/config.c > +++ b/tools/perf/util/config.c > @@ -461,6 +461,9 @@ static int perf_default_core_config(const char *var, const char *value) > if (!strcmp(var, "core.addr2line-timeout")) > addr2line_timeout_ms = strtoul(value, NULL, 10); > > + if (!strcmp(var, "core.addr2line-disable-warn")) > + symbol_conf.addr2line_disable_warn = strtoul(value, NULL, 10); As it's boolean, better to use perf_config_bool() instead of strtoul() so that it can accept "true" or "yes" as well as numbers. Thanks, Namhyung > + > /* Add other config variables here. */ > return 0; > } > -- > 2.53.0 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 3/3] perf addr2line: Remove global variable addr2line_timeout_ms 2026-04-02 8:01 [PATCH v2 0/3] perf addr2line: Rework disable_add2line_warn Thomas Richter 2026-04-02 8:01 ` [PATCH v2 1/3] perf config: Rename symbol_conf::disable_add2line_warn Thomas Richter 2026-04-02 8:01 ` [PATCH v2 2/3] perf config: Make symbol_conf::addr2line_disable_warn configurable Thomas Richter @ 2026-04-02 8:01 ` Thomas Richter 2026-04-03 2:16 ` Namhyung Kim 2 siblings, 1 reply; 7+ messages in thread From: Thomas Richter @ 2026-04-02 8:01 UTC (permalink / raw) To: linux-kernel, linux-s390, linux-perf-users, acme, namhyung, irogers Cc: agordeev, gor, sumanthk, hca, japo, Thomas Richter Remove global variable addr2line_timeout_ms and add is as member to symbol_conf structure. Update the documentation for perf config file. Fixes: 257046a36750a ("perf srcline: Fallback between addr2line implementations") Signed-off-by: Thomas Richter <tmricht@linux.ibm.com> Reviewed-by: Ian Rogers <irogers@google.com> Cc: Ian Rogers <irogers@google.com> --- tools/perf/Documentation/perf-config.txt | 6 ++++++ tools/perf/util/addr2line.c | 8 ++++---- tools/perf/util/addr2line.h | 2 -- tools/perf/util/config.c | 3 +-- tools/perf/util/symbol_conf.h | 1 + 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/tools/perf/Documentation/perf-config.txt b/tools/perf/Documentation/perf-config.txt index 642d1c490d9e..efc15b6db7e2 100644 --- a/tools/perf/Documentation/perf-config.txt +++ b/tools/perf/Documentation/perf-config.txt @@ -206,6 +206,12 @@ colors.*:: Default values are 'white', 'blue'. core.*:: + addr2line-disable-warn:: + When set to 1 disable all warnings from 'addr2line' output. + Default setting is 0 to show these warnings. + addr2line-timeout:: + Sets a timeout (in milliseconds) for parsing 'addr2line' + output. The default timeout is 500ms. core.proc-map-timeout:: Sets a timeout (in milliseconds) for parsing /proc/<pid>/maps files. Can be overridden by the --proc-map-timeout option on supported diff --git a/tools/perf/util/addr2line.c b/tools/perf/util/addr2line.c index e9f084db0802..1b7f66ece570 100644 --- a/tools/perf/util/addr2line.c +++ b/tools/perf/util/addr2line.c @@ -18,9 +18,6 @@ #define MAX_INLINE_NEST 1024 -/* If addr2line doesn't return data for 5 seconds then timeout. */ -int addr2line_timeout_ms = 5 * 1000; - static int filename_split(char *filename, unsigned int *line_nr) { char *sep; @@ -87,6 +84,9 @@ static struct child_process *addr2line_subprocess_init(const char *addr2line_pat return NULL; } + if (!symbol_conf.addr2line_timeout_ms) + symbol_conf.addr2line_timeout_ms = 5 * 1000; + return a2l; } @@ -335,7 +335,7 @@ int cmd__addr2line(const char *dso_name, u64 addr, goto out; } io__init(&io, a2l->out, buf, sizeof(buf)); - io.timeout_ms = addr2line_timeout_ms; + io.timeout_ms = symbol_conf.addr2line_timeout_ms; switch (read_addr2line_record(&io, cmd_a2l_style, dso_name, addr, /*first=*/true, &record_function, &record_filename, &record_line_nr)) { case -1: diff --git a/tools/perf/util/addr2line.h b/tools/perf/util/addr2line.h index d35a47ba8dab..75989a92f16b 100644 --- a/tools/perf/util/addr2line.h +++ b/tools/perf/util/addr2line.h @@ -8,8 +8,6 @@ struct dso; struct inline_node; struct symbol; -extern int addr2line_timeout_ms; - int cmd__addr2line(const char *dso_name, u64 addr, char **file, unsigned int *line_nr, struct dso *dso, diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c index 31541e03aab7..573b3a3f5999 100644 --- a/tools/perf/util/config.c +++ b/tools/perf/util/config.c @@ -19,7 +19,6 @@ #include "util/hist.h" /* perf_hist_config */ #include "util/stat.h" /* perf_stat__set_big_num */ #include "util/evsel.h" /* evsel__hw_names, evsel__use_bpf_counters */ -#include "util/addr2line.h" /* addr2line_timeout_ms */ #include "srcline.h" #include "build-id.h" #include "debug.h" @@ -459,7 +458,7 @@ static int perf_default_core_config(const char *var, const char *value) proc_map_timeout = strtoul(value, NULL, 10); if (!strcmp(var, "core.addr2line-timeout")) - addr2line_timeout_ms = strtoul(value, NULL, 10); + symbol_conf.addr2line_timeout_ms = strtoul(value, NULL, 10); if (!strcmp(var, "core.addr2line-disable-warn")) symbol_conf.addr2line_disable_warn = strtoul(value, NULL, 10); diff --git a/tools/perf/util/symbol_conf.h b/tools/perf/util/symbol_conf.h index 21a1f096d4f0..6cd454d7c98e 100644 --- a/tools/perf/util/symbol_conf.h +++ b/tools/perf/util/symbol_conf.h @@ -80,6 +80,7 @@ struct symbol_conf { *bt_stop_list_str; const char *addr2line_path; enum a2l_style addr2line_style[MAX_A2L_STYLE]; + int addr2line_timeout_ms; unsigned long time_quantum; struct strlist *dso_list, *comm_list, -- 2.53.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 3/3] perf addr2line: Remove global variable addr2line_timeout_ms 2026-04-02 8:01 ` [PATCH v2 3/3] perf addr2line: Remove global variable addr2line_timeout_ms Thomas Richter @ 2026-04-03 2:16 ` Namhyung Kim 0 siblings, 0 replies; 7+ messages in thread From: Namhyung Kim @ 2026-04-03 2:16 UTC (permalink / raw) To: Thomas Richter Cc: linux-kernel, linux-s390, linux-perf-users, acme, irogers, agordeev, gor, sumanthk, hca, japo On Thu, Apr 02, 2026 at 10:01:59AM +0200, Thomas Richter wrote: > Remove global variable addr2line_timeout_ms and add is as member > to symbol_conf structure. Update the documentation for perf config > file. > > Fixes: 257046a36750a ("perf srcline: Fallback between addr2line implementations") I don't think this fixes anything. > Signed-off-by: Thomas Richter <tmricht@linux.ibm.com> > Reviewed-by: Ian Rogers <irogers@google.com> > Cc: Ian Rogers <irogers@google.com> > --- > tools/perf/Documentation/perf-config.txt | 6 ++++++ > tools/perf/util/addr2line.c | 8 ++++---- > tools/perf/util/addr2line.h | 2 -- > tools/perf/util/config.c | 3 +-- > tools/perf/util/symbol_conf.h | 1 + > 5 files changed, 12 insertions(+), 8 deletions(-) > > diff --git a/tools/perf/Documentation/perf-config.txt b/tools/perf/Documentation/perf-config.txt > index 642d1c490d9e..efc15b6db7e2 100644 > --- a/tools/perf/Documentation/perf-config.txt > +++ b/tools/perf/Documentation/perf-config.txt > @@ -206,6 +206,12 @@ colors.*:: > Default values are 'white', 'blue'. > > core.*:: > + addr2line-disable-warn:: > + When set to 1 disable all warnings from 'addr2line' output. > + Default setting is 0 to show these warnings. > + addr2line-timeout:: > + Sets a timeout (in milliseconds) for parsing 'addr2line' > + output. The default timeout is 500ms. It should be 5000ms or 5s. > core.proc-map-timeout:: > Sets a timeout (in milliseconds) for parsing /proc/<pid>/maps files. > Can be overridden by the --proc-map-timeout option on supported > diff --git a/tools/perf/util/addr2line.c b/tools/perf/util/addr2line.c > index e9f084db0802..1b7f66ece570 100644 > --- a/tools/perf/util/addr2line.c > +++ b/tools/perf/util/addr2line.c > @@ -18,9 +18,6 @@ > > #define MAX_INLINE_NEST 1024 > > -/* If addr2line doesn't return data for 5 seconds then timeout. */ > -int addr2line_timeout_ms = 5 * 1000; > - > static int filename_split(char *filename, unsigned int *line_nr) > { > char *sep; > @@ -87,6 +84,9 @@ static struct child_process *addr2line_subprocess_init(const char *addr2line_pat > return NULL; > } > > + if (!symbol_conf.addr2line_timeout_ms) > + symbol_conf.addr2line_timeout_ms = 5 * 1000; As I said before, you can put it in the util/symbol.c. Thanks, Namhyung > + > return a2l; > } > > @@ -335,7 +335,7 @@ int cmd__addr2line(const char *dso_name, u64 addr, > goto out; > } > io__init(&io, a2l->out, buf, sizeof(buf)); > - io.timeout_ms = addr2line_timeout_ms; > + io.timeout_ms = symbol_conf.addr2line_timeout_ms; > switch (read_addr2line_record(&io, cmd_a2l_style, dso_name, addr, /*first=*/true, > &record_function, &record_filename, &record_line_nr)) { > case -1: > diff --git a/tools/perf/util/addr2line.h b/tools/perf/util/addr2line.h > index d35a47ba8dab..75989a92f16b 100644 > --- a/tools/perf/util/addr2line.h > +++ b/tools/perf/util/addr2line.h > @@ -8,8 +8,6 @@ struct dso; > struct inline_node; > struct symbol; > > -extern int addr2line_timeout_ms; > - > int cmd__addr2line(const char *dso_name, u64 addr, > char **file, unsigned int *line_nr, > struct dso *dso, > diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c > index 31541e03aab7..573b3a3f5999 100644 > --- a/tools/perf/util/config.c > +++ b/tools/perf/util/config.c > @@ -19,7 +19,6 @@ > #include "util/hist.h" /* perf_hist_config */ > #include "util/stat.h" /* perf_stat__set_big_num */ > #include "util/evsel.h" /* evsel__hw_names, evsel__use_bpf_counters */ > -#include "util/addr2line.h" /* addr2line_timeout_ms */ > #include "srcline.h" > #include "build-id.h" > #include "debug.h" > @@ -459,7 +458,7 @@ static int perf_default_core_config(const char *var, const char *value) > proc_map_timeout = strtoul(value, NULL, 10); > > if (!strcmp(var, "core.addr2line-timeout")) > - addr2line_timeout_ms = strtoul(value, NULL, 10); > + symbol_conf.addr2line_timeout_ms = strtoul(value, NULL, 10); > > if (!strcmp(var, "core.addr2line-disable-warn")) > symbol_conf.addr2line_disable_warn = strtoul(value, NULL, 10); > diff --git a/tools/perf/util/symbol_conf.h b/tools/perf/util/symbol_conf.h > index 21a1f096d4f0..6cd454d7c98e 100644 > --- a/tools/perf/util/symbol_conf.h > +++ b/tools/perf/util/symbol_conf.h > @@ -80,6 +80,7 @@ struct symbol_conf { > *bt_stop_list_str; > const char *addr2line_path; > enum a2l_style addr2line_style[MAX_A2L_STYLE]; > + int addr2line_timeout_ms; > unsigned long time_quantum; > struct strlist *dso_list, > *comm_list, > -- > 2.53.0 > ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-04-03 2:16 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-04-02 8:01 [PATCH v2 0/3] perf addr2line: Rework disable_add2line_warn Thomas Richter 2026-04-02 8:01 ` [PATCH v2 1/3] perf config: Rename symbol_conf::disable_add2line_warn Thomas Richter 2026-04-03 2:08 ` Namhyung Kim 2026-04-02 8:01 ` [PATCH v2 2/3] perf config: Make symbol_conf::addr2line_disable_warn configurable Thomas Richter 2026-04-03 2:12 ` Namhyung Kim 2026-04-02 8:01 ` [PATCH v2 3/3] perf addr2line: Remove global variable addr2line_timeout_ms Thomas Richter 2026-04-03 2:16 ` Namhyung Kim
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox