Skip to content

Commit 7d9f7d3

Browse files
Carlos Llamasakpm00
authored andcommitted
scripts/decode_stacktrace.sh: fix build ID and PC source parsing
Support for parsing PC source info in stacktraces (e.g. '(P)') was added in commit 2bff77c ("scripts/decode_stacktrace.sh: fix decoding of lines with an additional info"). However, this logic was placed after the build ID processing. This incorrect order fails to parse lines containing both elements, e.g.: drm_gem_mmap_obj+0x114/0x200 [drm 03d0564e0529947d67bb2008c3548be77279fd27] (P) This patch fixes the problem by extracting the PC source info first and then processing the module build ID. With this change, the line above is now properly parsed as such: drm_gem_mmap_obj (./include/linux/mmap_lock.h:212 ./include/linux/mm.h:811 drivers/gpu/drm/drm_gem.c:1177) drm (P) While here, also add a brief explanation the build ID section. Link: https://lkml.kernel.org/r/20251030010347.2731925-1-cmllamas@google.com Fixes: 2bff77c ("scripts/decode_stacktrace.sh: fix decoding of lines with an additional info") Signed-off-by: Carlos Llamas <cmllamas@google.com> Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Cc: Breno Leitao <leitao@debian.org> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Marc Rutland <mark.rutland@arm.com> Cc: Mark Brown <broonie@kernel.org> Cc: Matthieu Baerts <matttbe@kernel.org> Cc: Miroslav Benes <mbenes@suse.cz> Cc: Puranjay Mohan <puranjay@kernel.org> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
1 parent 9fd7bb5 commit 7d9f7d3

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

scripts/decode_stacktrace.sh

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -277,12 +277,6 @@ handle_line() {
277277
fi
278278
done
279279

280-
if [[ ${words[$last]} =~ ^[0-9a-f]+\] ]]; then
281-
words[$last-1]="${words[$last-1]} ${words[$last]}"
282-
unset words[$last] spaces[$last]
283-
last=$(( $last - 1 ))
284-
fi
285-
286280
# Extract info after the symbol if present. E.g.:
287281
# func_name+0x54/0x80 (P)
288282
# ^^^
@@ -295,6 +289,14 @@ handle_line() {
295289
last=$(( $last - 1 ))
296290
fi
297291

292+
# Join module name with its build id if present, as these were
293+
# split during tokenization (e.g. "[module" and "modbuildid]").
294+
if [[ ${words[$last]} =~ ^[0-9a-f]+\] ]]; then
295+
words[$last-1]="${words[$last-1]} ${words[$last]}"
296+
unset words[$last] spaces[$last]
297+
last=$(( $last - 1 ))
298+
fi
299+
298300
if [[ ${words[$last]} =~ \[([^]]+)\] ]]; then
299301
module=${words[$last]}
300302
# some traces format is "(%pS)", which like "(foo+0x0/0x1 [bar])"

0 commit comments

Comments
 (0)