Hi Yang,
On Wed, Mar 08, 2023 at 11:56:38AM -0800, Yang Shi wrote:
[...]
Dumping raw events could show the events from the bad data file. But it has zero samples after event collapse.
The only difference is --kcore inserted a new text_poke dummy event. It seems coresight also inserted a dummy event with my command but your command didn't. So it seems like the two dummy events confused event collapse.
The text_poke dummy event is added by commit f42c0ce573df79d1b8bd169008c994dcdd43585a ("perf record: Always get text_poke events with --kcore option"). If I reverted this commit, then it works. But I'm not sure whether this is the right fix or real root cause or not. Or coresight shouldn't insert its own dummy event?
It seems like coresight needs to insert the dummy event if full_auxtrace is on IIUC. So it sounds like event collapse can't handle such a case?
I am struggling to understand the meaning "event collapse" :)
I reviewed your shared dump, the bad and good perf data both contain the dummy event with 'text_poke = 1'. Could you confirm the shared dump in your previous email is correct or not?
I also tried v5.19 (before "perf record: Always get text_poke events with --kcore option", which was merged in v6.0), it works. So it seems like a regression.
Yeah, we need to fix it. I am not sure the Linux kernel for Arm64 supports text poke or not (kernel needs some specific handling when alter instructions), the kernel change is the prerequisites.
On the other hand, in the current code cs-etm misses to handle the event PERF_RECORD_TEXT_POKE in the function cs_etm__process_event(). This might be the cause for the failure.
Do you mind to share the bad perf.data file with James and me?
Thanks, Leo