On Tue, 28 Jan 2025 10:46:21 -0500 Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx> wrote: > On 2025-01-28 10:36, Masami Hiramatsu (Google) wrote: > > Hi, > > > > This introduces relative stacktrace, which records stacktrace entry as > > the offset from _stext instead of raw address. User can enable this > > format by setting options/relative-stacktrace. > > > > Basically, this does not change anything for users who are using ftrace > > with 'trace' text-formatted interface. This changes how each stacktrace > > entry address is stored, so users who is using 'trace_pipe_raw' needs > > to change how to decode the stacktrace. > > > > Currently, the stacktrace is stored as raw kernel address. Thus, for > > decoding the binary trace data, we need to refer the kallsyms. But this > > is not useful on the platform which prohibits to access /proc/kallsyms > > for security reason. Since KASLR will change the kernel text address, > > we can not decode symbols without kallsyms in userspace. > > > > On the other hand, if we record the stacktrace entries in the offset > > from _stext, we can use System.map file to decode it. This is also good > > for the stacktrace in the persistent ring buffer, because we don't need > > to save the kallsyms before crash anymore. > > > > The problem is to decode the address in the modules because it will be > > loaded in the different place. To solve this issue, I also introduced > > 'module_text_offsets' event, which records module's text and init_text > > info as the offset from _stext when loading it. User can store this > > event in the (another) persistent ring buffer for decoding. > > This does not handle the situation where a module is already loaded > before tracing starts. In LTTng we have a statedump facility for this, > where we can iterate on all modules at trace start and dump the relevant > information. Thanks for the comment! For the persistent ring buffer, I think we can enable this event in early boot stage which allows us to store it. (But this overwrites the previous data, hmm, we need A-B buffer...) Thank you, -- Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx>