When addr2line returns more than one location, decode_stacktrace does not currently remove base path from the paths. So the result might look like (line wrapped here): ptrace_stop (include/linux/freezer.h:57 /home/abuild/rpmbuild/BUILD/kernel-default-5.8.rc5/linux-5.8-rc5/linux-obj/../include/linux/freezer.h:67 /home/abuild/rpmbuild/BUILD/kernel-default-5.8.rc5/linux-5.8-rc5/linux-obj/../include/linux/freezer.h:128 /home/abuild/rpmbuild/BUILD/kernel-default-5.8.rc5/linux-5.8-rc5/linux-obj/../include/linux/freezer.h:173 /home/abuild/rpmbuild/BUILD/kernel-default-5.8.rc5/linux-5.8-rc5/linux-obj/../kernel/signal.c:2217)
Make sure all the lines are processed, so the result now looks like (line wrapped here again): ptrace_stop (include/linux/freezer.h:57 include/linux/freezer.h:67 include/linux/freezer.h:128 include/linux/freezer.h:173 kernel/signal.c:2217) Signed-off-by: Jiri Slaby <jsl...@suse.cz> Fixes: 67a28de47faa (scripts/decode_stacktrace: only strip base path when a prefix of the path) Cc: Sasha Levin <sas...@kernel.org> --- scripts/decode_stacktrace.sh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/scripts/decode_stacktrace.sh b/scripts/decode_stacktrace.sh index 4bdcb6d8c605..3fddcb48b464 100755 --- a/scripts/decode_stacktrace.sh +++ b/scripts/decode_stacktrace.sh @@ -140,14 +140,15 @@ parse_symbol() { return fi - # Strip out the base of the path - code=${code#$basepath/} - - # In the case of inlines, move everything to same line - code=${code//$'\n'/' '} + declare -a output + while read LINE; do + # Strip out the base of the path + LINE=${LINE#$basepath/} + output+=("$LINE") + done <<< $code # Replace old address with pretty line numbers - symbol="$segment$name ($code)" + symbol="$segment$name (${output[@]})" } decode_code() { -- 2.27.0