values->threads_max = 16;
        values->pid = malloc(values->threads_max * sizeof(*values->pid));
        values->tid = malloc(values->threads_max * sizeof(*values->tid));
-       values->value = malloc(values->threads_max * sizeof(*values->value));
+       values->value = zalloc(values->threads_max * sizeof(*values->value));
        if (!values->pid || !values->tid || !values->value) {
                pr_debug("failed to allocate read_values threads arrays");
                goto out_free_pid;
        }
 
        i = values->threads;
-       values->value[i] = malloc(values->counters_max * sizeof(**values->value));
+
+       values->value[i] = zalloc(values->counters_max * sizeof(**values->value));
        if (!values->value[i]) {
                pr_debug("failed to allocate read_values counters array");
                return -ENOMEM;
 
        for (i = 0; i < values->threads; i++) {
                u64 *value = realloc(values->value[i], counters_max * sizeof(**values->value));
+               int j;
 
                if (!value) {
                        pr_debug("failed to enlarge read_values ->values array");
                        goto out_free_name;
                }
 
+               for (j = values->counters_max; j < counters_max; j++)
+                       value[j] = 0;
+
                values->value[i] = value;
        }