Hagen reported broken strings in python3 tracepoint scripts: make PYTHON=python3 ./perf record -e sched:sched_switch -a -- sleep 5 ./perf script --gen-script py ./perf script -s ./perf-script.py [..] sched__sched_switch 7 563231.759525792 0 swapper \ prev_comm=bytearray(b'swapper/7\x00\x00\x00\x00\x00\x00\x00'), \ prev_pid=0, prev_prio=120, prev_state=, next_comm=bytearray(b'mutex-thread-co\x00'), The problem is in is_printable_array function that does not take zero byte into account and claim such string as not printable, so the code will create byte array instead of string. Cc: stable@xxxxxxxxxxxxxxx Fixes: 249de6e07458 ("perf script python: Fix string vs byte array resolving") Tested-by: Hagen Paul Pfeifer <hagen@xxxxxxxx> Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx> --- tools/perf/util/print_binary.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/util/print_binary.c b/tools/perf/util/print_binary.c index 599a1543871d..13fdc51c61d9 100644 --- a/tools/perf/util/print_binary.c +++ b/tools/perf/util/print_binary.c @@ -50,7 +50,7 @@ int is_printable_array(char *p, unsigned int len) len--; - for (i = 0; i < len; i++) { + for (i = 0; i < len && p[i]; i++) { if (!isprint(p[i]) && !isspace(p[i])) return 0; } -- 2.26.2