Linux Perf Users
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Arnaldo Carvalho de Melo" <acme@kernel.org>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH 04/12] perf debuginfo: Let the user skip and disable debuginfod fetches
Date: Wed, 16 Sep 2026 18:46:30 +0000	[thread overview]
Message-ID: <20260916184631.587571F0089E@smtp.kernel.org> (raw)
In-Reply-To: <20260916183215.54305-5-acme@kernel.org>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] perf debuginfo: thread-unsafe setenv and config modification in fetch callback
--

commit 9924f6f0641ff8a22e081d24fa05c81be062cdf7
Author: Arnaldo Carvalho de Melo <acme@redhat.com>

perf debuginfo: Let the user skip and disable debuginfod fetches

When a fetch is in progress, it prints progress and allows users to abort
it using 's' to skip the current fetch or 'd' to additionally disable
debuginfod for the rest of the session.

> diff --git a/tools/perf/util/debuginfo.c b/tools/perf/util/debuginfo.c
> --- a/tools/perf/util/debuginfo.c
> +++ b/tools/perf/util/debuginfo.c
[ ... ]
> +static void debuginfod__cancel_key(int key)
> +{
> +	if (key == 's' || key == 'S') {
> +		debuginfod_fetch_cancelled = true;
> +		debuginfod__skipped("Skipping this debuginfod fetch, this build ID will not be fetched again in this session, press 'd' to also disable it for the other ones");
> +	} else if (key == 'd' || key == 'D') {
> +		debuginfod_fetch_cancelled = true;
> +		symbol_conf.debuginfod = false;
> +		/*
> +		 * libdwfl's own debuginfod client reads DEBUGINFOD_URLS
> +		 * in every query, so clear it to stop it as well.
> +		 */
> +		setenv("DEBUGINFOD_URLS", "", 1);
> +		if (perf_config__set_variable("core.debuginfod", "false"))

[Severity: High]
Are setenv() and perf_config__set_variable() safe to call here?

When running perf top, the background process_thread may fetch debuginfo
and invoke debuginfod_progress_fn(). If the user hits 'd' to cancel,
debuginfod__cancel_key() calls setenv() and perf_config__set_variable().

At the same time, the concurrent display_thread can call getenv() (e.g.
implicitly via libc functions) or perf_config() (e.g. via script_browse()).

This could cause a data race on environ and on the unprotected static global
parsing state variables in config.c, potentially leading to memory corruption
or a crash.

> +			debuginfod__skipped("Skipping this debuginfod fetch and disabling debuginfod for this session, run 'perf config core.debuginfod=false' to also disable it permanently");
> +		else if (config_exclusive_filename)
> +			debuginfod__skipped("Skipping this debuginfod fetch and disabling debuginfod for this session and in the configuration file");
> +		else
> +			debuginfod__skipped("Skipping this debuginfod fetch and disabling debuginfod for this session and in ~/.perfconfig");
> +	}
> +}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260916183215.54305-1-acme@kernel.org?part=4

  reply	other threads:[~2026-09-16 18:46 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-16 18:32 [PATCH v6 0/12] perf tools: Annotate fixes, stdio progress indication, debuginfo-client in more places Arnaldo Carvalho de Melo
2026-09-16 18:32 ` [PATCH 01/12] perf test: Skip data_type_profiling when the PMU cannot record memory events Arnaldo Carvalho de Melo
2026-09-16 18:38   ` sashiko-bot
2026-09-16 18:32 ` [PATCH 02/12] perf debuginfo: Fetch debuginfo keyed by build ID using debuginfod Arnaldo Carvalho de Melo
2026-09-16 18:40   ` sashiko-bot
2026-09-16 18:32 ` [PATCH 03/12] perf config: Move perf_config__set_variable() to util/config.c Arnaldo Carvalho de Melo
2026-09-16 18:43   ` sashiko-bot
2026-09-16 18:32 ` [PATCH 04/12] perf debuginfo: Let the user skip and disable debuginfod fetches Arnaldo Carvalho de Melo
2026-09-16 18:46   ` sashiko-bot [this message]
2026-09-16 18:32 ` [PATCH 05/12] perf debuginfo: Show the debuginfod fetch progress and keys in the TUI Arnaldo Carvalho de Melo
2026-09-16 18:44   ` sashiko-bot
2026-09-16 18:32 ` [PATCH 06/12] perf symbol: Fall back to fetching the vmlinux by build ID Arnaldo Carvalho de Melo
2026-09-16 18:47   ` sashiko-bot
2026-09-16 18:32 ` [PATCH 07/12] perf annotate-data: Show the sample count in the data-type browser Arnaldo Carvalho de Melo
2026-09-16 18:41   ` sashiko-bot
2026-09-16 18:32 ` [PATCH 08/12] perf report: Add --progress option Arnaldo Carvalho de Melo
2026-09-16 18:43   ` sashiko-bot
2026-09-16 18:32 ` [PATCH 09/12] perf scripts: Add perf-stuck, to tell where a running perf is stuck Arnaldo Carvalho de Melo
2026-09-16 18:38   ` sashiko-bot
2026-09-16 18:32 ` [PATCH 10/12] perf annotate-data: Resolve type DIEs in the debug file they came from Arnaldo Carvalho de Melo
2026-09-16 18:44   ` sashiko-bot
2026-09-16 18:32 ` [PATCH 11/12] perf mem record: Request PERF_SAMPLE_CPU by default Arnaldo Carvalho de Melo
2026-09-16 18:45   ` sashiko-bot
2026-09-16 18:32 ` [PATCH 12/12] perf mem record: Use the IBS swfilt filter when available Arnaldo Carvalho de Melo
2026-09-16 18:43   ` sashiko-bot
  -- strict thread matches above, loose matches on Subject: below --
2026-09-16 11:47 [PATCH v6 0/12] perf tools: Annotate fixes, stdio progress indication, debuginfo-client in more places Arnaldo Carvalho de Melo
2026-09-16 11:47 ` [PATCH 04/12] perf debuginfo: Let the user skip and disable debuginfod fetches Arnaldo Carvalho de Melo
2026-09-16 11:59   ` sashiko-bot
2026-09-16 18:53   ` Namhyung Kim
2026-09-16 21:27     ` Arnaldo Carvalho de Melo

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=20260916184631.587571F0089E@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=acme@kernel.org \
    --cc=linux-perf-users@vger.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