Hi Dave,

I have been looking at the trace extension that you deliver together with 
crash. In the kernel I look at the trace_array is defined as:

struct trace_array {
  struct list_head  list;
  char             *name;
  struct trace_buffer  trace_buffer;
#ifdef CONFIG_TRACER_MAX_TRACE
  /*
  */
  struct trace_buffer  max_buffer;
  bool                 allocated_snapshot;
#endif
  ....

However trace.c assumes that if the trace_buffer field exists then the 
max_buffer field also exists, which is not true. So if CONFIG_TRACER_MAX_TRACE 
is not defined in the kernel then the trace extension will fail when it is 
loaded with a message that the max_buffer field does not exist.

To fix this then the statements:

  init_offset(trace_array, max_buffer);
in the function init_offsets and

  ftrace_int_max_tr_trace();
in function ftrace_init should not be executed if the max_buffer field is not 
present. I have tested this and it works for me.

Jan

Jan Karlsson
Senior Software Engineer
System Assurance

Sony Mobile Communications
Tel: +46 703 062 174
[email protected]<mailto:[email protected]>

sonymobile.com<http://sonymobile.com/>

[cid:[email protected]]

--
Crash-utility mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/crash-utility

Reply via email to