• Steven Rostedt's avatar
    tracing: Fix stacktrace of latency tracers (irqsoff and friends) · db4c75cb
    Steven Rostedt authored
    While debugging a latency with someone on IRC (mirage335) on #linux-rt (OFTC),
    we discovered that the stacktrace output of the latency tracers
    (preemptirqsoff) was empty.
    
    This bug was caused by the creation of the dynamic length stack trace
    again (like commit 12b5da34 "tracing: Fix ent_size in trace output" was).
    
    This bug is caused by the latency tracers requiring the next event
    to determine the time between the current event and the next. But by
    grabbing the next event, the iter->ent_size is set to the next event
    instead of the current one. As the stacktrace event is the last event,
    this makes the ent_size zero and causes nothing to be printed for
    the stack trace. The dynamic stacktrace uses the ent_size to determine
    how much of the stack can be printed. The ent_size of zero means
    no stack.
    
    The simple fix is to save the iter->ent_size before finding the next event.
    
    Note, mirage335 asked to remain anonymous from LKML and git, so I will
    not add the Reported-by and Tested-by tags, even though he did report
    the issue and tested the fix.
    
    Cc: stable@vger.kernel.org # 3.1+
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    db4c75cb
trace_output.c 27.8 KB