+ 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<frag_size;k++){
+ 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*);
+ pointed_address1 = xbt_strdup(get_addr_memory_map(*((void **)((char *)addr_frag1 + pointer_align)), s_heap, r_heap));
+ pointed_address2 = xbt_strdup(get_addr_memory_map(*((void **)((char *)addr_frag2 + pointer_align)), s_heap, r_heap));
+ fprintf(stderr, "Pointed address : %p (in %s) - %p (in %s)\n", *((void **)((char *)addr_frag1 + pointer_align)), pointed_address1, *((void **)((char *)addr_frag2 + pointer_align)), pointed_address2);
+ if((strcmp(pointed_address1, pointed_address2) == 0) && (strcmp(pointed_address1, "std_heap") == 0)){
+ /* FIXME : compare value pointed thanks to DWARF */
+ }
+ }
+ }
+
+ fprintf(stderr, "Hamming distance between fragments : %d\n", distance);
+
+ mmalloc_backtrace_fragment_display(mdp1, i, j);
+ mmalloc_backtrace_fragment_display(mdp2, i, j);