X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/624f2dace76a17e378a5ceeee2b838d3c3152ed3..9575359fcebd3a393b65891c293990d1a882eb34:/src/mc/mc_checkpoint.cpp diff --git a/src/mc/mc_checkpoint.cpp b/src/mc/mc_checkpoint.cpp index d8c934365b..84cdfd820a 100644 --- a/src/mc/mc_checkpoint.cpp +++ b/src/mc/mc_checkpoint.cpp @@ -17,10 +17,9 @@ #include "src/internal_config.h" #include "src/mc/mc_private.h" -#include "xbt/module.h" -#include -#include #include "src/smpi/private.h" +#include "xbt/mmalloc.h" +#include "xbt/module.h" #include "src/xbt/mmalloc/mmprivate.h" @@ -32,12 +31,12 @@ #include "src/mc/mc_private.h" #include -#include "src/mc/mc_snapshot.h" +#include "src/mc/mc_hash.hpp" #include "src/mc/mc_mmu.h" -#include "src/mc/mc_unw.h" -#include "src/mc/mc_protocol.h" #include "src/mc/mc_smx.h" -#include "mc_hash.hpp" +#include "src/mc/mc_snapshot.h" +#include "src/mc/mc_unw.h" +#include "src/mc/remote/mc_protocol.h" #include "src/mc/RegionSnapshot.hpp" #include "src/mc/ObjectInformation.hpp" @@ -46,8 +45,7 @@ using simgrid::mc::remote; -XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_checkpoint, mc, - "Logging specific to mc_checkpoint"); +XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_checkpoint, mc, "Logging specific to mc_checkpoint"); namespace simgrid { namespace mc { @@ -57,7 +55,7 @@ namespace mc { /** @brief Restore a region from a snapshot * - * @param reg Target region + * @param region Target region */ static void restore(mc_mem_region_t region) { @@ -270,7 +268,7 @@ void find_object_address( * A variable may be defined only from a given value of IP. * * \param var Variable description - * \param frame Scope description + * \param scope Scope description * \param ip Instruction pointer * \return true if the variable is valid * */ @@ -292,7 +290,7 @@ static void fill_local_variables_values(mc_stack_frame_t stack_frame, { simgrid::mc::Process* process = &mc_model_checker->process(); - if (!scope->range.contain(stack_frame->ip)) + if (!scope || !scope->range.contain(stack_frame->ip)) return; for(simgrid::mc::Variable& current_variable : @@ -367,7 +365,8 @@ static std::vector unwind_stack_frames(simgrid::mc::UnwindCo stack_frame.unw_cursor = c; - unw_word_t ip, sp; + unw_word_t ip; + unw_word_t sp; unw_get_reg(&c, UNW_REG_IP, &ip); unw_get_reg(&c, UNW_REG_SP, &sp); @@ -527,7 +526,7 @@ static std::vector get_current_fds(pid_t pid) // We don't handle them. // It does not mean we should silently ignore them however. - if (strncmp(link, "pipe:", 5) == 0 || strncmp(link, "socket:", 7) == 0) + if (strncmp(link, "pipe:", std::strlen("pipe:")) == 0 || strncmp(link, "socket:", std::strlen("socket:")) == 0) continue; // If dot_output enabled, do not handle the corresponding file @@ -541,7 +540,7 @@ static std::vector get_current_fds(pid_t pid) } // This is probably a shared memory used by lttng-ust: - if(strncmp("/dev/shm/ust-shm-tmp-", link, 21)==0) + if(strncmp("/dev/shm/ust-shm-tmp-", link, std::strlen("/dev/shm/ust-shm-tmp-"))==0) continue; // Add an entry for this FD in the snapshot: @@ -563,13 +562,10 @@ std::shared_ptr take_snapshot(int num_state) simgrid::mc::Process* mc_process = &mc_model_checker->process(); - std::shared_ptr snapshot = - std::make_shared(mc_process); - - snapshot->num_state = num_state; + std::shared_ptr snapshot = std::make_shared(mc_process, num_state); - for (auto& p : mc_model_checker->process().simix_processes()) - snapshot->enabled_processes.insert(p.copy.pid); + for (auto& p : mc_model_checker->process().actors()) + snapshot->enabled_processes.insert(p.copy.getBuffer()->pid); snapshot_handle_ignore(snapshot.get()); @@ -581,7 +577,7 @@ std::shared_ptr take_snapshot(int num_state) snapshot->to_ignore = mc_model_checker->process().ignored_heap(); - if (_sg_mc_visited > 0 || strcmp(_sg_mc_property_file, "")) { + if (_sg_mc_max_visited_states > 0 || strcmp(_sg_mc_property_file, "")) { snapshot->stacks = take_snapshot_stacks(snapshot.get()); if (_sg_mc_hash) snapshot->hash = simgrid::mc::hash(*snapshot); @@ -618,8 +614,7 @@ void restore_snapshot_regions(simgrid::mc::Snapshot* snapshot) static inline void restore_snapshot_fds(simgrid::mc::Snapshot* snapshot) { - if (mc_mode == MC_MODE_SERVER) - xbt_die("FD snapshot not implemented in client/server mode."); + xbt_die("FD snapshot not implemented in client/server mode."); for (auto const& fd : snapshot->current_fds) {