static void print_bpf_events(int total, struct lock_contention_fails *fails)
 {
        /* Output for debug, this have to be removed */
-       int broken = fails->task + fails->stack + fails->time;
+       int broken = fails->task + fails->stack + fails->time + fails->data;
 
        if (quiet || total == 0 || (broken == 0 && verbose <= 0))
                return;
        pr_info(" %10s: %d\n", "task", fails->task);
        pr_info(" %10s: %d\n", "stack", fails->stack);
        pr_info(" %10s: %d\n", "time", fails->time);
+       pr_info(" %10s: %d\n", "data", fails->data);
 }
+
 static void print_contention_result(struct lock_contention *con)
 {
        struct lock_stat *st;
 
        con->fails.task = skel->bss->task_fail;
        con->fails.stack = skel->bss->stack_fail;
        con->fails.time = skel->bss->time_fail;
+       con->fails.data = skel->bss->data_fail;
 
        stack_trace = zalloc(stack_size);
        if (stack_trace == NULL)
 
 int task_fail;
 int stack_fail;
 int time_fail;
+int data_fail;
 
 static inline int can_record(u64 *ctx)
 {
                if (aggr_mode == LOCK_AGGR_ADDR)
                        first.flags |= check_lock_type(pelem->lock, pelem->flags);
 
-               bpf_map_update_elem(&lock_stat, &key, &first, BPF_NOEXIST);
+               if (bpf_map_update_elem(&lock_stat, &key, &first, BPF_NOEXIST) < 0)
+                       __sync_fetch_and_add(&data_fail, 1);
                bpf_map_delete_elem(&tstamp, &pid);
                return 0;
        }