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

From: Namhyung Kim

Date: Sat Jul 04 2026 - 12:54:41 EST


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

>
> 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
>