control flow view works (state computation enabled) : has bugs with multiple cpus
[lttv.git] / ltt / branches / poly / lttv / lttv / state.c
index 89b86b9c46b0d064046166337adf5b128327f3f7..6ee5e32e1dc9d04a7cdbfbb0ad521e53789dd8ff 100644 (file)
@@ -488,6 +488,9 @@ static void state_restore(LttvTraceState *self, LttvAttribute *container)
 
   nb_tracefile = self->parent.tracefiles->len;
 
+  g_tree_destroy(tsc->pqueue);
+  tsc->pqueue = g_tree_new(compare_tracefile);
   for(i = 0 ; i < nb_tracefile ; i++) {
     tfcs = 
           LTTV_TRACEFILE_STATE(g_array_index(self->parent.tracefiles,
@@ -505,18 +508,16 @@ static void state_restore(LttvTraceState *self, LttvAttribute *container)
     type = lttv_attribute_get_by_name(tracefile_tree, LTTV_STATE_EVENT, 
         &value);
     g_assert(type == LTTV_POINTER);
-    g_assert(*(value.v_pointer) != NULL);
+    //g_assert(*(value.v_pointer) != NULL);
     ep = *(value.v_pointer);
     g_assert(tfcs->parent.t_context != NULL);
     
-    g_tree_destroy(tsc->pqueue);
-    tsc->pqueue = g_tree_new(compare_tracefile);
-    
     LttvTracefileContext *tfc = LTTV_TRACEFILE_CONTEXT(tfcs);
     
     if(ep != NULL) {
       g_assert(ltt_tracefile_seek_position(tfc->tf, ep) == 0);
       tfc->timestamp = ltt_event_time(ltt_tracefile_get_event(tfc->tf));
+      g_assert(ltt_time_compare(tfc->timestamp, ltt_time_infinite) != 0);
       g_tree_insert(tsc->pqueue, tfc, tfc);
     } else {
       tfc->timestamp = ltt_time_infinite;
@@ -1379,7 +1380,7 @@ static gboolean state_save_event_hook(void *hook_data, void *call_data)
   if(likely((*event_count)++ < LTTV_STATE_SAVE_INTERVAL))
     return FALSE;
   else
-    event_count = 0;
+    *event_count = 0;
   
   LttvTracefileState *self = (LttvTracefileState *)call_data;
 
@@ -1548,10 +1549,9 @@ void lttv_state_save_add_event_hooks(LttvTracesetState *self)
     ts = (LttvTraceState *)self->parent.traces[i];
     nb_tracefile = ts->parent.tracefiles->len;
 
-    guint *event_count = g_new(guint, 1);
-    *event_count = 0;
-
     for(j = 0 ; j < nb_tracefile ; j++) {
+      guint *event_count = g_new(guint, 1);
+      *event_count = 0;
       tfs = 
           LTTV_TRACEFILE_STATE(g_array_index(ts->parent.tracefiles,
                                           LttvTracefileContext*, j));
This page took 0.041617 seconds and 4 git commands to generate.