- if(memcmp(addr_frag1, addr_frag2, frag_size) != 0){
- fprintf(stderr,"Different data in fragment %zu in block %zu \n", j, i);
- return 1;
+
+ if(memcmp(addr_frag1, addr_frag2, mdp1->heapinfo[i].busy_frag.frag_size[j]) != 0){
+ fprintf(stderr,"\nDifferent data in fragment %zu (size = %zu, size used = %hu) in block %zu \n", j, frag_size, mdp1->heapinfo[i].busy_frag.frag_size[j], i);
+
+ /* Hamming distance on different blocks */
+ distance = 0;
+ for(k=0;k<mdp1->heapinfo[i].busy_frag.frag_size[j];k++){
+ if(memcmp(((char *)addr_frag1) + k, ((char *)addr_frag2) + k, 1) != 0){
+ fprintf(stderr, "Different byte (offset=%d) (%p - %p) in fragment %zu in block %zu\n", k, (char *)addr_frag1 + k, (char *)addr_frag2 + k, j, i);
+ distance++;
+ pointer_align = (k / sizeof(void*)) * sizeof(void*);
+ fprintf(stderr, "Pointer address : %p - %p\n", *((void **)((char *)addr_frag1 + pointer_align)), *((void **)((char *)addr_frag2 + pointer_align)));
+ }
+ }
+
+ fprintf(stderr, "Hamming distance between fragments : %d\n", distance);
+
+ mmalloc_backtrace_fragment_display(mdp1, i, j);
+ mmalloc_backtrace_fragment_display(mdp2, i, j);
+ errors++;