X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/13975211f041f20675232b7b2397eae61790503a..50376f845bf79ba752eb226efdeb2a46b2ff88cf:/src/mc/mc_checkpoint.c diff --git a/src/mc/mc_checkpoint.c b/src/mc/mc_checkpoint.c index ce65e39336..30dfc176d3 100644 --- a/src/mc/mc_checkpoint.c +++ b/src/mc/mc_checkpoint.c @@ -689,6 +689,24 @@ static xbt_dynar_t MC_take_snapshot_ignore(){ } +static void MC_dump_checkpoint_ignore(mc_snapshot_t snapshot){ + + unsigned int cursor = 0; + mc_checkpoint_ignore_region_t region; + size_t offset; + + xbt_dynar_foreach(mc_checkpoint_ignore, cursor, region){ + if(region->addr > snapshot->regions[0]->start_addr && (char *)(region->addr) < (char *)snapshot->regions[0]->start_addr + STD_HEAP_SIZE){ + offset = (char *)region->addr - (char *)snapshot->regions[0]->start_addr; + memset((char *)snapshot->regions[0]->start_addr + offset, 0, region->size); + }else if(region->addr > snapshot->regions[2]->start_addr && (char *)(region->addr) < (char*)snapshot->regions[2]->start_addr + snapshot->regions[2]->size){ + offset = (char *)region->addr - (char *)snapshot->regions[2]->start_addr; + memset((char *)snapshot->regions[2]->start_addr + offset, 0, region->size); + } + } + +} + mc_snapshot_t MC_take_snapshot(){ @@ -710,6 +728,8 @@ mc_snapshot_t MC_take_snapshot(){ //MC_get_hash_local(snapshot->hash_local, snapshot->stacks); } + MC_dump_checkpoint_ignore(snapshot); + MC_UNSET_RAW_MEM; if(raw_mem)