[PATCH 3/3] scripts/decode_stacktrace.sh: code: preserve alignment

Matthieu Baerts (NGI0) posted 3 patches 1 day, 10 hours ago
[PATCH 3/3] scripts/decode_stacktrace.sh: code: preserve alignment
Posted by Matthieu Baerts (NGI0) 1 day, 10 hours ago
With lines having a code to decode, the alignment was not preserved for
the first line.

With this sample ...

  [   52.238089][   T55] RIP: 0010:__ip_queue_xmit+0x127c/0x1820
  [   52.238401][   T55] Code: c1 83 e0 07 48 c1 e9 03 83 c0 03 (...)

... the script was producing the following output:

  [   52.238089][   T55] RIP: 0010:__ip_queue_xmit (...)
  [ 52.238401][ T55] Code: c1 83 e0 07 48 c1 e9 03 83 c0 03 (...)

That's because scripts/decodecode doesn't preserve the alignment. No
need to modify it, it is enough to give only the "Code: (...)" part to
this script, and print the prefix without modifications.

With the same sample, we now have:

  [   52.238089][   T55] RIP: 0010:__ip_queue_xmit (...)
  [   52.238401][   T55] Code: c1 83 e0 07 48 c1 e9 03 83 c0 03 (...)

Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
 scripts/decode_stacktrace.sh | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/scripts/decode_stacktrace.sh b/scripts/decode_stacktrace.sh
index 0c92d6a7f777e1b2d5452dd894a13a71e3d58051..c73cb802a0a3fc6559c5f53ff844e5cc6e433615 100755
--- a/scripts/decode_stacktrace.sh
+++ b/scripts/decode_stacktrace.sh
@@ -242,8 +242,10 @@ debuginfod_get_vmlinux() {
 
 decode_code() {
 	local scripts=`dirname "${BASH_SOURCE[0]}"`
+	local lim="Code: "
 
-	echo "$1" | $scripts/decodecode
+	echo -n "${1%%${lim}*}"
+	echo "${lim}${1##*${lim}}" | $scripts/decodecode
 }
 
 handle_line() {

-- 
2.51.0
Re: [PATCH 3/3] scripts/decode_stacktrace.sh: code: preserve alignment
Posted by Carlos Llamas 1 day, 9 hours ago
On Mon, Sep 08, 2025 at 05:41:59PM +0200, Matthieu Baerts (NGI0) wrote:
> With lines having a code to decode, the alignment was not preserved for
> the first line.
> 
> With this sample ...
> 
>   [   52.238089][   T55] RIP: 0010:__ip_queue_xmit+0x127c/0x1820
>   [   52.238401][   T55] Code: c1 83 e0 07 48 c1 e9 03 83 c0 03 (...)
> 
> ... the script was producing the following output:
> 
>   [   52.238089][   T55] RIP: 0010:__ip_queue_xmit (...)
>   [ 52.238401][ T55] Code: c1 83 e0 07 48 c1 e9 03 83 c0 03 (...)
> 
> That's because scripts/decodecode doesn't preserve the alignment. No
> need to modify it, it is enough to give only the "Code: (...)" part to
> this script, and print the prefix without modifications.
> 
> With the same sample, we now have:
> 
>   [   52.238089][   T55] RIP: 0010:__ip_queue_xmit (...)
>   [   52.238401][   T55] Code: c1 83 e0 07 48 c1 e9 03 83 c0 03 (...)
> 
> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
> ---
>  scripts/decode_stacktrace.sh | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/scripts/decode_stacktrace.sh b/scripts/decode_stacktrace.sh
> index 0c92d6a7f777e1b2d5452dd894a13a71e3d58051..c73cb802a0a3fc6559c5f53ff844e5cc6e433615 100755
> --- a/scripts/decode_stacktrace.sh
> +++ b/scripts/decode_stacktrace.sh
> @@ -242,8 +242,10 @@ debuginfod_get_vmlinux() {
>  
>  decode_code() {
>  	local scripts=`dirname "${BASH_SOURCE[0]}"`
> +	local lim="Code: "
>  
> -	echo "$1" | $scripts/decodecode
> +	echo -n "${1%%${lim}*}"
> +	echo "${lim}${1##*${lim}}" | $scripts/decodecode
>  }
>  
>  handle_line() {
> 
> -- 
> 2.51.0
> 

This also worked for me. From this:

  [  143.815379][ T5218] kernel BUG at rust/helpers/bug.c:7!
  [  143.815970][ T5218] Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
  [...]
  [ 143.842198][ T5218] RIP: 0010:rust_helper_BUG (rust/helpers/bug.c:7 (discriminator 4)) 
  [ 143.842231][ T5218] Code: cc cc cc cc cc 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 b8 (...)

... to now:

  [  143.815379][ T5218] kernel BUG at rust/helpers/bug.c:7!
  [  143.815970][ T5218] Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
  [...]
  [  143.842198][ T5218] RIP: 0010:rust_helper_BUG (rust/helpers/bug.c:7 (discriminator 4))
  [  143.842231][ T5218] Code: cc cc cc cc cc 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 b8 (...)

Tested-by: Carlos Llamas <cmllamas@google.com>