[PATCH v2 00/16] perf python: Fix python extension bugs from v19 review
From: Ian Rogers
Date: Wed Jun 24 2026 - 01:15:51 EST
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
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