From: sashiko-bot@kernel.org
To: "Arnaldo Carvalho de Melo" <acme@kernel.org>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v3 02/19] perf test attr: Allow tests to require a core PMU
Date: Fri, 16 Oct 2026 00:26:21 +0000 [thread overview]
Message-ID: <sashiko-outbox-173525@kernel.org> (raw)
In-Reply-To: <20261016001843.71978-3-acme@kernel.org>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] perf python: memory leak in pyrf__parse_events() on error path
--
commit 8f696c0054607fd944b69ffbf9d282950abfb382
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
perf test attr: Allow tests to require a core PMU
This commit introduces a 'requires' limitation for perf tests to skip
execution if a core PMU is not available. It checks for a core PMU by using
the perf python binding to parse and open the 'cycles' event.
> diff --git a/tools/perf/tests/shell/lib/attr.py b/tools/perf/tests/shell/lib/attr.py
> index 68f06df9565a0..2d7dd26a57377 100644
> --- a/tools/perf/tests/shell/lib/attr.py
> +++ b/tools/perf/tests/shell/lib/attr.py
[ ... ]
> @@ -28,6 +29,50 @@ def data_equal(a, b):
>
> return False
>
> +CORE_PMU_AVAILABLE = None
> +
> +def core_pmu_available():
[ ... ]
> +def core_pmu_probe():
> + """
> + Ask perf itself, through its python binding, to parse and open 'cycles':
> + a parse failure or an ENOENT means no PMU can count it, any other error
> + means we can't tell whether there is one.
> + """
> + try:
> + import perf
> + parse_events = perf.parse_events
> + except (ImportError, AttributeError):
> + # Nothing to ask about it, let the expectations speak.
> + return True
> +
> + try:
> + evlist = parse_events('cycles')
[Severity: Low]
Does this trigger a memory leak when parse_events() fails?
The python C wrapper pyrf__parse_events() in tools/perf/util/python.c
appears to omit the required cleanup call on its error path:
tools/perf/util/python.c:pyrf__parse_events() {
...
if (parse_events(evlist, input, &err)) {
parse_events_error__print(&err, input);
PyErr_SetFromErrno(PyExc_OSError);
evlist__put(evlist);
return NULL;
}
...
}
While this leak was not introduced by this patch, this new core_pmu_probe()
function actively relies on and triggers this error path to detect the PMU
absence.
Could we clean up the dynamically allocated error strings within the
parse_events_error structure by calling parse_events_error__exit(&err) when
parsing fails?
> + except OSError:
> + # No PMU that can count it, the same as the ENOENT below.
> + return False
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261016001843.71978-1-acme@kernel.org?part=2
next prev parent reply other threads:[~2026-10-16 0:26 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-16 0:18 [PATCH v3 0/19] perf test attr: Report the failures again and cope with more than one core PMU Arnaldo Carvalho de Melo
2026-10-16 0:18 ` [PATCH v3 01/19] perf test attr: Fix record dwarf sample_type expectation Arnaldo Carvalho de Melo
2026-10-16 0:22 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 02/19] perf test attr: Allow tests to require a core PMU Arnaldo Carvalho de Melo
2026-10-16 0:26 ` sashiko-bot [this message]
2026-10-16 0:18 ` [PATCH v3 03/19] perf test attr: Fix legacy event encodings in group tests Arnaldo Carvalho de Melo
2026-10-16 0:32 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 04/19] perf test attr: Fix default stat metrics expectations Arnaldo Carvalho de Melo
2026-10-16 0:21 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 05/19] perf test attr: Relax group checking for ungrouped expectations Arnaldo Carvalho de Melo
2026-10-16 0:23 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 06/19] perf evsel: Mark the event as supported when retrying an open Arnaldo Carvalho de Melo
2026-10-16 0:25 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 07/19] perf test attr: Ignore the core PMU type perf puts in 'config' Arnaldo Carvalho de Melo
2026-10-16 0:24 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 08/19] perf evsel: Don't dump probe events to PERF_TEST_ATTR Arnaldo Carvalho de Melo
2026-10-16 0:31 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 09/19] perf test attr: Introduce mask_bits(), generalizing hide_core_pmu_type() Arnaldo Carvalho de Melo
2026-10-16 0:23 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 10/19] perf test attr: Accept either sample id bit perf asks for Arnaldo Carvalho de Melo
2026-10-16 0:28 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 11/19] perf test attr: Ignore the dummy tracking event and the terms it carries Arnaldo Carvalho de Melo
2026-10-16 0:25 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 12/19] perf test attr: Leave out the events of the other core PMUs Arnaldo Carvalho de Melo
2026-10-16 0:24 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 13/19] perf test attr: Ignore the group read_format bit the PMU count can remove Arnaldo Carvalho de Melo
2026-10-16 0:24 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 14/19] perf test attr: State, spelled out in a line, why a test is skipped Arnaldo Carvalho de Melo
2026-10-16 0:24 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 15/19] perf tests: Introduce a 'needs_mlock' suite flag Arnaldo Carvalho de Melo
2026-10-16 0:27 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 16/19] perf tests: Mark the C tests mapping perf ring buffers Arnaldo Carvalho de Melo
2026-10-16 0:24 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 17/19] perf tests: Mark the shell tests not " Arnaldo Carvalho de Melo
2026-10-16 0:26 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 18/19] perf mutex: Add a robust, process-shared mutex initializer Arnaldo Carvalho de Melo
2026-10-16 0:28 ` sashiko-bot
2026-10-16 0:18 ` [PATCH v3 19/19] perf test: Take turns using the perf mlock budget in the mmaping tests Arnaldo Carvalho de Melo
2026-10-16 0:28 ` 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-173525@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.