From 6aa732ffed8b1cfb7b7e1e07bad4bd8f781cc594 Mon Sep 17 00:00:00 2001 From: Emilia Kurdybelska Date: Tue, 27 Jan 2026 14:41:23 +0100 Subject: [PATCH] fix: mtrace timestamp convertion New OS has different timestamp format in mtrace file. This fix makes sof_per_analyzer.py handle both formats correctly. Signed-off-by: Emilia Kurdybelska --- tools/sof_perf_analyzer.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tools/sof_perf_analyzer.py b/tools/sof_perf_analyzer.py index 42654fb4..8ad64393 100755 --- a/tools/sof_perf_analyzer.py +++ b/tools/sof_perf_analyzer.py @@ -21,6 +21,7 @@ import re import pathlib import argparse +from datetime import timedelta from typing import TextIO from typing import Generator from dataclasses import dataclass @@ -135,7 +136,17 @@ def make_trace_item(fileio: TextIO) -> TraceItemGenerator: # both some specific offset from the sentinel. span_end_pos = match_obj.span()[1] trace_lvl = line[span_end_pos - 4: span_end_pos - 1] - timestamp = float(line[span_end_pos - 19: span_end_pos - 7].strip()) + try: + timestamp = float(line[span_end_pos - 19: span_end_pos - 7].strip()) + except ValueError: # For different timestamp format in mtrace file + h, m, rest = line[span_end_pos - 23: span_end_pos - 7].strip().split(':') + s1, s2 = rest.split(',') + s = s1+s2 + timestamp = timedelta( + hours=int(h), + minutes=int(m), + seconds=float(s) + ).total_seconds() # The rest after removing timestamp and log level rest = line[span_end_pos + 1:].split(': ')