Re: [PATCH v2] ARM: stacktrace: Add USER_STACKTRACE support
From: Jinjie Ruan <hidden>
Date: 2024-08-12 06:45:45
Also in:
linux-perf-users, lkml
On 2024/8/2 19:48, Russell King (Oracle) wrote:
On Tue, Jul 30, 2024 at 10:15:32AM +0800, Jinjie Ruan wrote:quoted
Currently, userstacktrace is unsupported for ARM. So use the perf_callchain_user() code as blueprint to implement the arch_stack_walk_user() which add userstacktrace support on ARM. Meanwhile, we can use arch_stack_walk_user() to simplify the implementation of perf_callchain_user(). A ftrace test case is shown as below: # cd /sys/kernel/debug/tracing # echo 1 > options/userstacktrace # echo 1 > options/sym-userobj # echo 1 > events/sched/sched_process_fork/enable # cat trace ...... sh-100 [000] ..... 51.779261: sched_process_fork: comm=sh pid=100 child_comm=sh child_pid=108 sh-100 [000] ..... 51.779285: <user stack trace> => /lib/libc.so.6[+0xb3c8c] => /bin/busybox[+0xffb901f1] Also a simple perf test is ok as below: # perf record -e cpu-clock --call-graph fp top # perf report --call-graph ..... [[31m 65.00%[[m 0.00% top [kernel.kallsyms] [k] __ret_fast_syscall | ---__ret_fast_syscall | |--[[31m30.00%[[m--__se_sys_getdents64 | iterate_dir | | | |--[[31m25.00%[[m--proc_pid_readdir Signed-off-by: Jinjie Ruan <redacted>Do you have a use case for this feature?
To my knowledge, user stack trace is used in both uprobes and ftrace.
Given that userspace is free to do whatever it likes with stack frames, I think this is going to be hit and miss whether it works.
To be honest, I referred to the implementation of ARM64. Does anyone have suggestions for improvements or modifications?