Re: [RFC PATCH v2 1/8] arm64: Implement stack trace termination record

From: Madhavan T. Venkataraman
Date: Thu Mar 18 2021 - 16:26:55 EST




On 3/18/21 10:09 AM, Mark Brown wrote:
> On Mon, Mar 15, 2021 at 11:57:53AM -0500, madvenka@xxxxxxxxxxxxxxxxxxx wrote:
>
>> In summary, task pt_regs->stackframe is where a successful stack trace ends.
>
>> .if \el == 0
>> - mov x29, xzr
>> + stp xzr, xzr, [sp, #S_STACKFRAME]
>> .else
>> stp x29, x22, [sp, #S_STACKFRAME]
>> - add x29, sp, #S_STACKFRAME
>> .endif
>> + add x29, sp, #S_STACKFRAME
>
> For both user and kernel threads this patch (at least by itself) results
> in an additional record being reported in stack traces with a NULL
> function pointer since it keeps the existing record where it is and adds
> this new fixed record below it. This is addressed for the kernel later
> in the series, by "arm64: Terminate the stack trace at TASK_FRAME and
> EL0_FRAME", but will still be visible to other unwinders such as
> debuggers. I'm not sure that this *matters* but it might and should at
> least be called out more explicitly.
>
> If we are going to add the extra record there would probably be less
> potential for confusion if we pointed it at some sensibly named dummy
> function so anything or anyone that does see it on the stack doesn't get
> confused by a NULL.
>

I agree. I will think about this some more. If no other solution presents
itself, I will add the dummy function.

Madhavan

>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>