From: sashiko-bot@kernel.org
To: "Ian Rogers" <irogers@google.com>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v4 2/2] perf arch x86 tests: Add test for topdown event sorting
Date: Mon, 18 May 2026 00:05:26 +0000 [thread overview]
Message-ID: <20260518000527.123B2C2BCB0@smtp.kernel.org> (raw)
In-Reply-To: <20260517232849.2391357-3-irogers@google.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] Memory leak in test_sort() on test assertion failure.
- [Medium] Dead code and completely ignored parameters in test_sort() due to a logical contradiction in test design.
--
commit 412c12ca56b31a24a283d86a447c891e7731f0d0
Author: Ian Rogers <irogers@google.com>
perf arch x86 tests: Add test for topdown event sorting
This commit adds a test to verify that slots and topdown-retiring events
are correctly sorted with respect to instructions. It checks that metric
events are placed after slots, which should be the group leader when
required by the PMU. It also verifies that the slots event is appropriately
injected into groups when not specified.
> diff --git a/tools/perf/arch/x86/tests/topdown.c b/tools/perf/arch/x86/tests/topdown.c
> index 3ee4e5e71be3b..ee8d673a0e7b1 100644
> --- a/tools/perf/arch/x86/tests/topdown.c
> +++ b/tools/perf/arch/x86/tests/topdown.c
[ ... ]
> + if (strstr(evsel__name(evsel), "slots")) {
> + /*
> + * Slots as a leader means the PMU is for a perf metric
> + * group as the slots event isn't present when not.
> + */
> + slots_seen = true;
> + TEST_ASSERT_EQUAL("slots group size", evsel->core.nr_members,
> + expected_slots_group_size);
Do the TEST_ASSERT_EQUAL and TEST_ASSERT_VAL macros leak evlist and err
if an assertion fails?
These macros execute a direct return TEST_FAIL when a condition is not met.
This would immediately abort the function, bypassing the out_err cleanup
block and leaking both the evlist structure and dynamically allocated
error strings.
[ ... ]
> + } else if (strstr(evsel__name(evsel), "instructions")) {
> + TEST_ASSERT_EQUAL("instructions group size", evsel->core.nr_members,
> + expected_instructions_group_size);
> + if (expected_instructions_group_size == 2) {
> + /*
> + * The instructions event leads a group with a
> + * topdown-retiring event, neither of which need
> + * reordering for perf metric event support.
> + */
> + struct evsel *next = evsel__next(evsel);
> +
> + TEST_ASSERT_VAL("instructions second event is topdown-retiring",
> + strstr(evsel__name(next), "topdown-retiring")
> + != NULL);
> + }
Is this expected_instructions_group_size check unreachable dead code?
Both parent test functions (test__x86_topdown_sorting and
test__x86_topdown_slots_injection) exit unconditionally with TEST_OK if
topdown_sys_has_perf_metrics() is false.
Because the test only executes on systems that enforce "slots" as a group
leader, "slots" is always injected or reordered to lead the group.
The evlist iteration loop explicitly skips non-leaders via:
if (!evsel__is_group_leader(evsel))
continue;
Consequently, "instructions" is never evaluated as the leader of a group
containing "topdown-retiring", making this block unreachable.
Furthermore, tests pass 2 for expected_instructions_group_size in cases
like "{instructions,topdown-retiring,slots}", which contains 3 events.
If "instructions" were actually evaluated as the leader, the assertion
would incorrectly fail.
The test passes because this parameter is ignored. Does this indicate a
logical contradiction in the test's design?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260517232849.2391357-1-irogers@google.com?part=2
next prev parent reply other threads:[~2026-05-18 0:05 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-25 18:30 [PATCH v1 0/2] perf tests: Add tests for uncore and perf metric event sorting Ian Rogers
2026-03-25 18:30 ` [PATCH v1 1/2] perf tests: Add test for uncore " Ian Rogers
2026-03-27 23:36 ` Chen, Zide
2026-03-31 3:06 ` Namhyung Kim
2026-03-25 18:30 ` [PATCH v1 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-03-30 21:53 ` Chen, Zide
2026-03-31 3:08 ` Namhyung Kim
2026-03-31 16:52 ` [PATCH v2 0/2] perf tests: Add tests for uncore and perf metric " Ian Rogers
2026-03-31 16:52 ` [PATCH v2 1/2] perf tests: Add test for uncore " Ian Rogers
2026-03-31 16:52 ` [PATCH v2 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-03-31 18:54 ` [PATCH v3 0/2] Add tests for uncore and perf metric " Ian Rogers
2026-03-31 18:54 ` [PATCH v3 1/2] perf tests: Add test for uncore " Ian Rogers
2026-04-01 21:48 ` Namhyung Kim
2026-03-31 18:54 ` [PATCH v3 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-04-01 3:33 ` Namhyung Kim
2026-05-17 23:28 ` [PATCH v4 0/2] perf tests: Add uncore and x86 topdown event sorting tests Ian Rogers
2026-05-17 23:28 ` [PATCH v4 1/2] perf tests: Add test for uncore event sorting Ian Rogers
2026-05-17 23:49 ` sashiko-bot
2026-05-17 23:28 ` [PATCH v4 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-05-18 0:05 ` sashiko-bot [this message]
2026-05-18 0:37 ` [PATCH v5 0/2] perf tests: Add uncore and x86 topdown event sorting tests Ian Rogers
2026-05-18 0:37 ` [PATCH v5 1/2] perf tests: Add test for uncore event sorting Ian Rogers
2026-05-18 1:06 ` sashiko-bot
2026-05-18 0:37 ` [PATCH v5 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-05-18 1:20 ` sashiko-bot
2026-05-18 2:32 ` [PATCH v6 0/2] perf tests: Add uncore and x86 topdown event sorting tests Ian Rogers
2026-05-18 2:32 ` [PATCH v6 1/2] perf tests: Add test for uncore event sorting Ian Rogers
2026-05-18 2:53 ` sashiko-bot
2026-05-18 2:32 ` [PATCH v6 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-05-18 3:08 ` sashiko-bot
2026-05-18 4:31 ` [PATCH v7 0/2] perf tests: Add uncore and x86 topdown event sorting tests Ian Rogers
2026-05-18 4:31 ` [PATCH v7 1/2] perf tests: Add test for uncore event sorting Ian Rogers
2026-05-18 4:48 ` sashiko-bot
2026-05-18 4:31 ` [PATCH v7 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-05-18 6:29 ` [PATCH v8 0/2] perf tests: Add uncore and x86 topdown event sorting tests Ian Rogers
2026-05-18 6:29 ` [PATCH v8 1/2] perf tests: Add test for uncore event sorting Ian Rogers
2026-05-18 6:29 ` [PATCH v8 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-05-20 15:31 ` [PATCH v8 0/2] perf tests: Add uncore and x86 topdown event sorting tests Ian Rogers
2026-05-20 20:28 ` Namhyung Kim
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=20260518000527.123B2C2BCB0@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=irogers@google.com \
--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