All of lore.kernel.org
 help / color / mirror / Atom feed
From: takahiro.akashi@linaro.org (AKASHI Takahiro)
To: linux-arm-kernel@lists.infradead.org
Subject: Stack trace using ftrace
Date: Tue, 07 Jul 2015 16:59:06 +0900	[thread overview]
Message-ID: <559B86CA.2060508@linaro.org> (raw)
In-Reply-To: <42A36D72-9621-4FEF-B977-7FC6E4421618@gmail.com>

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@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.
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.

-Takahiro AKASHI

>          Depth    Size   Location    (47 entries)
>          -----    ----   --------
>    0)     4664     240   jiffies_to_timeval+0x1c/0x7c
>    1)     4424       0   ftrace_graph_call+0x0/0x14
>    2)     4424       0   jiffies_to_timeval+0x1c/0x7c
>    3)     4424       0   __acct_update_integrals+0x4c/0xbc
>    4)     4424       0   acct_account_cputime+0x28/0x34
>    5)     4424       0   account_system_time+0xb4/0x1e0
>    6)     4424      32   account_process_tick+0x58/0xa0
>    7)     4392      48   update_process_times+0x30/0x74
>    8)     4344      32   tick_sched_handle.isra.15+0x3c/0x7c
>    9)     4312      48   tick_sched_timer+0x4c/0x90
>   10)     4264      48   __run_hrtimer+0x64/0x258
>   11)     4216      64   hrtimer_interrupt+0xec/0x260
>   12)     4152     128   arch_timer_handler_virt+0x3c/0x48
>   13)     4024      32   handle_percpu_devid_irq+0x88/0x188
>   14)     3992      64   generic_handle_irq+0x3c/0x54
>   15)     3928      32   __handle_domain_irq+0x6c/0xbc
>   16)     3896      64   gic_handle_irq+0x3c/0x88
>   17)     3832     336   el1_irq+0x68/0xd8
>   18)     3496     112   icmp_glue_bits+0x50/0x94
>   19)     3384      80   __ip_append_data.isra.40+0x894/0xb48
>   20)     3304     224   ip_append_data.part.42+0x9c/0xe8
>   21)     3080     112   ip_append_data+0x6c/0x7c
>   22)     2968      96   icmp_push_reply+0x80/0x144
>   23)     2872      96   icmp_send+0x3c4/0x3c8
>   24)     2776     192   __udp4_lib_rcv+0x5bc/0x684
>   25)     2584      96   udp_rcv+0x30/0x3c
>   26)     2488      32   ip_local_deliver+0xa4/0x224
>   27)     2456      48   ip_rcv+0x364/0x57c
>   28)     2408      64   __netif_receive_skb_core+0x4d4/0x80c
>   29)     2344     128   __netif_receive_skb+0x28/0x84
>   30)     2216      32   process_backlog+0xa0/0x15c
>   31)     2184      80   net_rx_action+0x1f0/0x32c
>   32)     2104     160   __do_softirq+0x118/0x2f0
>   33)     1944     128   do_softirq+0x64/0x68
>   34)     1816      32   __local_bh_enable_ip+0xb4/0xd4
>   35)     1784      32   ip_finish_output+0x1f8/0xabc
>   36)     1752      96   ip_output+0xf4/0x120
>   37)     1656      64   ip_local_out_sk+0x48/0x54
>   38)     1592      32   ip_send_skb+0x28/0xbc
>   39)     1560      48   udp_send_skb+0x1b8/0x2f4
>   40)     1512      80   udp_sendmsg+0x2ac/0x7a0
>   41)     1432     272   inet_sendmsg+0xa4/0xd0
>   42)     1160      48   sock_sendmsg+0x34/0x78
>   43)     1112      32   ___sys_sendmsg+0x160/0x26c
>   44)     1080     400   __sys_sendmmsg+0x98/0x180
>   45)      680     320   SyS_sendmmsg+0x3c/0x54
>   46)      360     360   el0_svc_naked+0x24/0x28
>
> Best Regards
> Jungseok Lee
>

  reply	other threads:[~2015-07-07  7:59 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-05 11:33 Stack trace using ftrace Jungseok Lee
2015-07-06  7:56 ` AKASHI Takahiro
2015-07-06 12:04   ` Jungseok Lee
2015-07-07  7:59     ` AKASHI Takahiro [this message]
2015-07-07 13:49       ` Jungseok Lee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=559B86CA.2060508@linaro.org \
    --to=takahiro.akashi@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.