Messages in this thread Patch in this message | | | From | Wei Li <> | Subject | [RFC PATCH] perf tools: intel-bts: fix endless record after being terminated | Date | Thu, 2 Jan 2020 15:42:24 +0800 |
| |
In __cmd_record(), when receiving SIGINT(ctrl + c), a done flag will be set and the event list will be disabled by evlist__disable() once.
While in auxtrace_record.read_finish(), the related events will be enabled again, if they are continuous, the recording seems to be endless.
If the intel_bts event is disabled, we don't enable it again here.
Note: This patch is NOT tested since i don't have such a machine with intel_bts feature, but the code seems buggy same as arm-spe and intel-pt.
Signed-off-by: Wei Li <liwei391@huawei.com> --- tools/perf/arch/x86/util/intel-bts.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/tools/perf/arch/x86/util/intel-bts.c b/tools/perf/arch/x86/util/intel-bts.c index 27d9e214d068..d524ba802a2e 100644 --- a/tools/perf/arch/x86/util/intel-bts.c +++ b/tools/perf/arch/x86/util/intel-bts.c @@ -420,9 +420,13 @@ static int intel_bts_read_finish(struct auxtrace_record *itr, int idx) struct evsel *evsel; evlist__for_each_entry(btsr->evlist, evsel) { - if (evsel->core.attr.type == btsr->intel_bts_pmu->type) - return perf_evlist__enable_event_idx(btsr->evlist, - evsel, idx); + if (evsel->core.attr.type == btsr->intel_bts_pmu->type) { + if (evsel->disabled) + return 0; + else + return perf_evlist__enable_event_idx( + btsr->evlist, evsel, idx); + } } return -EINVAL; } -- 2.17.1
| |