How to get kernel stack trace if process not blocked?

From: Ethan Wilson
Date: Sun Aug 17 2014 - 06:13:13 EST


Hello list,
cat /proc/pid/stack shows the kernel call stack of a process, and this is so good, but it will show just 0xffffffffffffffff if the process is running in kernel space and not blocked (sleeping).
With just an 0xffffffffffffffff AFAIU it is also impossible to distinguish a process running in kernel space from a process running in user space.

It would be *very* useful to get the kernel stack trace for a running process, even if imprecise, or at least knowing the name of the kernel function executing now (top of the stack). Why is it not doable?

I tried to disable CONFIG_SCHED_OMIT_FRAME_POINTER but it didn't allow to print the stack from /proc/pid/stack anyway. What is the benefit of disabling such kernel option (i.e. having the frame pointer)?

I guessed that maybe with EIP from /proc/pid/stat it is possible to do something like that but I can't find much information on how to do that.

Thanks for any information
EW

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/