# Re: \[PATCH v10 04/14\] unwind\_user/deferred: Add unwind\_deferred\_trace()

- From: Steven Rostedt \<rostedt@goodmis.org\>
- Date: 2025-06-18 15:29:38 
- List: linux-trace-kernel
- Page: https://ratatoskr.run/linux-trace-kernel/2025/06/3097667
- Thread: https://ratatoskr.run/linux-trace-kernel/2025/06/3086227/t.md

```text
On Wed, 18 Jun 2025 16:02:47 +0200
Peter Zijlstra [ref] wrote:

> On Tue, Jun 10, 2025 at 08:54:25PM -0400, Steven Rostedt wrote:
> > +/**
> > + * unwind_deferred_trace - Produce a user stacktrace in faultable context
> > + * @trace: The descriptor that will store the user stacktrace
> > + *
> > + * This must be called in a known faultable context (usually when entering
> > + * or exiting user space). Depending on the available implementations
> > + * the @trace will be loaded with the addresses of the user space stacktrace
> > + * if it can be found.  
> 
> I am confused -- why would we ever want to call this on exiting
> user-space, or rather kernel entry?
> 
> I thought the whole point was to request a user trace while in-kernel,
> and defer that to return-to-user.

This code was broken out of the unwind deferred trace to be more stand
alone. Actually, it should be renamed to unwind_faultable_trace() or
something to denote that it must be called from a faultable context.

When Josh made perf use the task_work directly, it used this function to do
the trace as it handled the deferring.

Note, a request from the gcc folks is to add a system call that gives the
user space application a backtrace from its current location. This can be
handy for debugging as it would be similar to how we use dump_stack().

This function would be used for that.

-- Steve
```
