misc: add address sanitizer heap instrumentation
[vpp.git] / src / vlib / threads.c
index e59919e..07e1d79 100644 (file)
@@ -845,6 +845,7 @@ start_workers (vlib_main_t * vm)
 #ifdef VLIB_SUPPORTS_ARBITRARY_SCALAR_SIZES
              nm_clone->frame_size_hash = hash_create (0, sizeof (uword));
 #endif
+             nm_clone->node_by_error = nm->node_by_error;
 
              /* Packet trace buffers are guaranteed to be empty, nothing to do here */
 
@@ -1059,11 +1060,7 @@ vlib_worker_thread_node_refork (void)
     clib_mem_alloc_no_fail (vec_len (nm->nodes) * sizeof (*new_n_clone));
   for (j = 0; j < vec_len (nm->nodes); j++)
     {
-      vlib_node_t *old_n_clone;
-      vlib_node_t *new_n;
-
-      new_n = nm->nodes[j];
-      old_n_clone = old_nodes_clone[j];
+      vlib_node_t *new_n = nm->nodes[j];
 
       clib_memcpy_fast (new_n_clone, new_n, sizeof (*new_n));
       /* none of the copied nodes have enqueue rights given out */
@@ -1079,6 +1076,7 @@ vlib_worker_thread_node_refork (void)
        }
       else
        {
+         vlib_node_t *old_n_clone = old_nodes_clone[j];
          /* Copy stats if the old data is valid */
          clib_memcpy_fast (&new_n_clone->stats_total,
                            &old_n_clone->stats_total,
@@ -1182,6 +1180,7 @@ vlib_worker_thread_node_refork (void)
 
   nm_clone->processes = vec_dup_aligned (nm->processes,
                                         CLIB_CACHE_LINE_BYTES);
+  nm_clone->node_by_error = nm->node_by_error;
 }
 
 void
@@ -1430,7 +1429,7 @@ vlib_worker_thread_barrier_sync_int (vlib_main_t * vm, const char *func_name)
   for (i = 1; i < vec_len (vlib_mains); i++)
     max_vector_rate =
       clib_max (max_vector_rate,
-               vlib_last_vectors_per_main_loop_as_f64 (vlib_mains[i]));
+               (f64) vlib_last_vectors_per_main_loop (vlib_mains[i]));
 
   vlib_worker_threads[0].barrier_sync_count++;