Re: [PATCH v2 00/16] perf python: Fix python extension bugs from v19 review

From: Ian Rogers

Date: Sat Jul 04 2026 - 19:03:43 EST


On Sat, Jul 4, 2026 at 9:54 AM Namhyung Kim <namhyung@xxxxxxxxxx> wrote:
>
> Hi Ian,
>
> On Tue, Jun 23, 2026 at 10:15:17PM -0700, Ian Rogers wrote:
> > Phase 1 of splitting the v19 review patches into smaller fixes.
> > These patches address issues identified in the python extension during
> > the review of the v19 script porting series, as well as fixing several
> > pre-existing bugs and leaks.
> >
> > v2:
> > - Addressed sashiko review feedback:
> > - Fixed 64-bit casting for counts_values by using T_ULONGLONG and PyLong_FromUnsignedLongLong.
> > - Replaced strict Py_TYPE checks with PyObject_TypeCheck for thread/cpu maps.
> > - Fixed a missing CHECK_INITIALIZED for pyrf_thread__get_cpu, pyrf_pmu__name, pyrf_pmu__events.
> > - Included <string.h> where memset was used.
> > - Fixed line splitting formatting on PyObject_New in pyrf_evsel__read.
> > - Added fixes for memory leaks and issues discovered during review:
> > - Fix memory leak of key and value in pyrf__metrics_cb
> > - Fix count_values memory leak in pyrf_evsel__read
> > - Fix sb_evlist leaks in both top and record paths.
> > - Fix potential divide by zero in perf_event__synthesize_threads
> >
> > v1:
> > - Decomposed the single large "Fix python extension bugs" patch into 13 individual fixes.
> > - Added Fixes: tags for issues that date back to earlier commits.
> > - Addressed checkpatch warnings (line lengths, Signed-off-by, etc).
> >
> >
> > Ian Rogers (16):
> > perf script: Fix metric_evlist leak in script_find_metrics
> > perf stat: Fix evsel_list leak in cmd_stat
> > perf tools: Fix sb_evlist leaks in top and record
> > perf python: Fix memory leak in pyrf_evlist__get_pollfd
> > perf synthetic-events: Fix uninitialized pthread_join
> > perf data: Fix directory file descriptor leak in perf_data__switch
> > perf test: Fix skiplist leak in cmd_test
> > perf python: Check counts_values size in set_values
> > perf python: Validate CPU and thread maps in pyrf_evsel__open
> > perf python: Validate attribute setters in pyrf_evsel
> > perf python: Zero initialize perf_data in pyrf_data__init
> > perf python: Add thread and PMU uninitialized checks
> > perf python: Fix MetricGroup return type in perf.pyi
> > perf python: Fix count_values memory leak in pyrf_evsel__read
> > perf python: Fix memory leak in pyrf__metrics_cb
> > perf synthetic-events: Fix divide by zero in
> > perf_event__synthesize_threads
>
> Will you send v3? You don't need to fix all pre-existing issues but we
> should not introduce new bugs or regressions. I think some of Sashiko
> comments found them like data switch and pmu init checks.

Thanks Namhyung, I have a v3 coming. I'm working with Sashiko locally
and trying to address as many issues as possible, including minor
pre-existing ones—it's easier than remembering to clean them up later.

Ian

> Thanks,
> Namhyung
>
> >
> > tools/perf/builtin-record.c | 2 +
> > tools/perf/builtin-script.c | 2 +-
> > tools/perf/builtin-stat.c | 9 +-
> > tools/perf/builtin-top.c | 2 +
> > tools/perf/python/perf.pyi | 4 +-
> > tools/perf/tests/builtin-test.c | 5 +-
> > tools/perf/util/data.c | 3 +-
> > tools/perf/util/python.c | 160 ++++++++++++++++++++++++-----
> > tools/perf/util/synthetic-events.c | 6 +-
> > 9 files changed, 153 insertions(+), 40 deletions(-)
> >
> > --
> > 2.55.0.rc0.799.gd6f94ed593-goog
> >