X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4accf0246f11d3ed5c8988669f8d85279fcf21cf..c2184f1318115fcea2571f738e8359044bc78d42:/src/mc/mc_checkpoint.cpp diff --git a/src/mc/mc_checkpoint.cpp b/src/mc/mc_checkpoint.cpp index 1e24eff865..8e872d906c 100644 --- a/src/mc/mc_checkpoint.cpp +++ b/src/mc/mc_checkpoint.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2008-2017. The SimGrid Team. +/* Copyright (c) 2008-2018. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -18,6 +18,7 @@ #include "src/internal_config.h" #include "src/mc/mc_private.hpp" #include "src/smpi/include/private.hpp" +#include "xbt/file.hpp" #include "xbt/mmalloc.h" #include "xbt/module.h" @@ -31,6 +32,7 @@ #include "src/mc/mc_private.hpp" #include +#include "src/mc/mc_config.hpp" #include "src/mc/mc_hash.hpp" #include "src/mc/mc_mmu.hpp" #include "src/mc/mc_smx.hpp" @@ -142,7 +144,6 @@ void add_region(int index, simgrid::mc::Snapshot* snapshot, snapshot->snapshot_regions[index] = std::unique_ptr( new simgrid::mc::RegionSnapshot(std::move(region))); - return; } static void get_memory_regions(simgrid::mc::RemoteClient* process, simgrid::mc::Snapshot* snapshot) @@ -185,18 +186,15 @@ void find_object_address( std::vector const& maps, simgrid::mc::ObjectInformation* result) { - char* name = xbt_basename(result->file_name.c_str()); + std::string name = simgrid::xbt::Path(result->file_name).get_base_name(); for (size_t i = 0; i < maps.size(); ++i) { simgrid::xbt::VmMap const& reg = maps[i]; if (maps[i].pathname.empty()) continue; - char* map_basename = xbt_basename(maps[i].pathname.c_str()); - if (strcmp(name, map_basename) != 0) { - free(map_basename); + std::string map_basename = simgrid::xbt::Path(maps[i].pathname).get_base_name(); + if (map_basename != name) continue; - } - free(map_basename); // This is the non-GNU_RELRO-part of the data segment: if (reg.prot == PROT_RW) { @@ -250,8 +248,6 @@ void find_object_address( result->end = result->end_exec; xbt_assert(result->start_exec || result->start_rw || result->start_ro); - - free(name); } /************************************* Take Snapshot ************************************/ @@ -522,12 +518,9 @@ static std::vector get_current_fds(pid_t pid) // If dot_output enabled, do not handle the corresponding file if (dot_output != nullptr) { - char* link_basename = xbt_basename(link); - if (strcmp(link_basename, _sg_mc_dot_output_file) == 0) { - free(link_basename); + std::string link_basename = simgrid::xbt::Path(link).get_base_name(); + if (link_basename == _sg_mc_dot_output_file.get()) continue; - } - free(link_basename); } // This is probably a shared memory used by lttng-ust: @@ -568,7 +561,7 @@ std::shared_ptr take_snapshot(int num_state) snapshot->to_ignore = mc_model_checker->process().ignored_heap(); - if (_sg_mc_max_visited_states > 0 || strcmp(_sg_mc_property_file, "")) { + if (_sg_mc_max_visited_states > 0 || not _sg_mc_property_file.get().empty()) { snapshot->stacks = take_snapshot_stacks(snapshot.get()); if (_sg_mc_hash) snapshot->hash = simgrid::mc::hash(*snapshot); @@ -593,7 +586,7 @@ void restore_snapshot_regions(simgrid::mc::Snapshot* snapshot) #if HAVE_SMPI if(snapshot->privatization_index >= 0) { // Fix the privatization mmap: - s_mc_message_restore message{MC_MESSAGE_RESTORE, snapshot->privatization_index}; + s_mc_message_restore_t message{MC_MESSAGE_RESTORE, snapshot->privatization_index}; mc_model_checker->process().getChannel().send(message); } #endif