X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fce872a4f145c997f146ea0d098a77549a47bd0b..df00205b8db0067640f48bdb63426689aa80360f:/src/mc/mc_checkpoint.cpp diff --git a/src/mc/mc_checkpoint.cpp b/src/mc/mc_checkpoint.cpp index 97ca4ec26d..62902b22f6 100644 --- a/src/mc/mc_checkpoint.cpp +++ b/src/mc/mc_checkpoint.cpp @@ -417,32 +417,28 @@ static std::vector MC_take_snapshot_stacks(mc_snapshot_t { std::vector res; - unsigned int cursor = 0; - stack_region_t current_stack; - - // FIXME, cross-process support (stack_areas) - xbt_dynar_foreach(stacks_areas, cursor, current_stack) { + for (auto const& stack : mc_model_checker->process().stack_areas()) { s_mc_snapshot_stack_t st; // Read the context from remote process: unw_context_t context; mc_model_checker->process().read_bytes( - &context, sizeof(context), remote(current_stack->context)); + &context, sizeof(context), remote(stack.context)); if (mc_unw_init_context(&st.context, &mc_model_checker->process(), &context) < 0) { xbt_die("Could not initialise the libunwind context."); } st.stack_frames = MC_unwind_stack_frames(&st.context); - st.local_variables = MC_get_local_variables_values(st.stack_frames, current_stack->process_index); - st.process_index = current_stack->process_index; + st.local_variables = MC_get_local_variables_values(st.stack_frames, stack.process_index); + st.process_index = stack.process_index; unw_word_t sp = st.stack_frames[0].sp; res.push_back(std::move(st)); size_t stack_size = - (char*) current_stack->address + current_stack->size - (char*) sp; + (char*) stack.address + stack.size - (char*) sp; (*snapshot)->stack_sizes.push_back(stack_size); }