fix has_heartbeat : must be per tracefile for fast userspace tracing
[lttv.git] / ltt / branches / poly / ltt / tracefile.c
index 044ae4706009f19b409442c32ca4bd5dd532dc23..9f3ffe0bf4908c674bb11444225d8104d4f110c3 100644 (file)
@@ -223,6 +223,7 @@ int parse_trace_header(void *header, LttTracefile *tf, LttTrace *t)
    * (or is set to 0 if the trace has no float (kernel trace)) */
   tf->float_word_order = any->float_word_order;
        tf->has_alignment = any->has_alignment;
+  tf->has_heartbeat = any->has_heartbeat;
 
   if(t) {
     t->arch_type = ltt_get_uint32(LTT_GET_BO(tf),
@@ -233,7 +234,6 @@ int parse_trace_header(void *header, LttTracefile *tf, LttTrace *t)
     t->ltt_major_version = any->major_version;
     t->ltt_minor_version = any->minor_version;
     t->flight_recorder = any->flight_recorder;
-    t->has_heartbeat = any->has_heartbeat;
     t->compact_facilities = NULL;
   }
  
@@ -1900,11 +1900,11 @@ int ltt_tracefile_read_update_event(LttTracefile *tf)
        if(!tf->compact)
                pos += ltt_align((size_t)pos, tf->trace->arch_size, tf->has_alignment);
        else {
-               g_assert(tf->trace->has_heartbeat);
+               g_assert(tf->has_heartbeat);
                pos += ltt_align((size_t)pos, sizeof(uint32_t), tf->has_alignment);
        }
   
-       if(tf->trace->has_heartbeat) {
+       if(tf->has_heartbeat) {
                event->timestamp = ltt_get_uint32(LTT_GET_BO(tf),
                                                                                                                                                                        pos);
     if(!tf->compact) {
@@ -2217,7 +2217,13 @@ no_offset:
                /* Event size too big to fit in the event size field */
                tf->event.event_size = tf->event.data_size;
        }
-  g_assert(tf->event.data_size == tf->event.event_size);
+  if (tf->event.data_size != tf->event.event_size) {
+    g_error("Kernel/LTTV event size differs for event %s.%s: kernel %u, LTTV %u",
+               g_quark_to_string(f->name), g_quark_to_string(event_type->name),
+               tf->event.event_size, tf->event.data_size);
+    exit(-1);
+  }
+  //g_assert(tf->event.data_size == tf->event.event_size);
 
   return;
 
This page took 0.024937 seconds and 4 git commands to generate.