Stack trace using ftrace

Jungseok Lee jungseoklee85 at gmail.com
Tue Jul 7 06:49:55 PDT 2015


On Jul 7, 2015, at 4:59 PM, AKASHI Takahiro wrote:
> On 07/06/2015 09:04 PM, Jungseok Lee wrote:
>> On Jul 6, 2015, at 4:56 PM, AKASHI Takahiro wrote:
>>> Hi,
>> 
>> Hi,
>> 
>>> Thank you for your bug report.
>> 
>> Thanks for taking care about this topic.
>> 
>>> This issue comes from the fact that ftrace, more specifically check_stack(),
>>> goes over immediate values in the stack with each function's (bl instruction's) PC
>>> which is returned by save_stack_trace() while save_stack_trace(), or unwind_frame(),
>>> decrements the saved value of PC in the stack by 4. So mismatching can happen.
>>> 
>>> We can easily fix the problem by reverting the following commit:
>>> 
>>>> commit e306dfd06fcb44d21c80acb8e5a88d55f3d1cf63
>>>> Author: Olof Johansson <olof at lixom.net>
>>>> Date:   Fri Feb 14 19:35:15 2014 +0000
>>>> 
>>>>     ARM64: unwind: Fix PC calculation
>>> 
>>> But it will also resurrect the original problem.
>> 
>> IMHO, a current problem cannot be resolved by reverting the commit.
>> Please refer to the following data. The result looks much better than before,
>> but some entries still have 0 sizes.
> 
> Sorry for that.

It's okay.

> There seem to be several problems.
> The value in 'size' field should go one line up,
> for example, 32 for arch_timer_handler and 64 for
> handle_percpu_devid_irq.
> 
> I'm now looking into those issues.

I can support a test with dragonboard410c. Please let me know if necessary.
Thanks again!

Best Regards
Jungseok Lee


More information about the linux-arm-kernel mailing list