From: Gabriel Corona Date: Thu, 4 Dec 2014 10:02:16 +0000 (+0100) Subject: [mc] Move process info in a new s_mc_process_t structure X-Git-Tag: v3_12~732^2~162 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/1113792240aa3e88b1a2ba75474f338ad8db2ca2 [mc] Move process info in a new s_mc_process_t structure This is a beginning of the refactoring in order to support MC-ing a remote process. --- diff --git a/buildtools/Cmake/DefinePackages.cmake b/buildtools/Cmake/DefinePackages.cmake index 790a06d452..871bd05418 100644 --- a/buildtools/Cmake/DefinePackages.cmake +++ b/buildtools/Cmake/DefinePackages.cmake @@ -595,9 +595,12 @@ set(MC_SRC_BASE set(MC_SRC src/mc/mc_forward.h + src/mc/mc_process.h + src/mc/mc_process.c src/mc/mc_mmalloc.h src/mc/mc_model_checker.h src/mc/mc_object_info.h + src/mc/mc_object_info.c src/mc/mc_checkpoint.c src/mc/mc_snapshot.h src/mc/mc_snapshot.c diff --git a/examples/smpi/mc/non_deterministic.tesh b/examples/smpi/mc/non_deterministic.tesh index d32f46a291..229a2656ba 100644 --- a/examples/smpi/mc/non_deterministic.tesh +++ b/examples/smpi/mc/non_deterministic.tesh @@ -11,8 +11,8 @@ $ ../../../smpi_script/bin/smpirun -hostfile ${srcdir:=.}/hostfile_non_determini > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/running_power' to '1e9' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check communication determinism -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > [0.000000] [mc_comm_determinism/INFO] The communications pattern of the process 1 is different! (Different communication : 1) > [0.000000] [mc_comm_determinism/INFO] **************************************************** > [0.000000] [mc_comm_determinism/INFO] ***** Non-deterministic communications pattern ***** diff --git a/examples/smpi/mc/send_deterministic.tesh b/examples/smpi/mc/send_deterministic.tesh index 6bafa97516..7422e48642 100644 --- a/examples/smpi/mc/send_deterministic.tesh +++ b/examples/smpi/mc/send_deterministic.tesh @@ -11,8 +11,8 @@ $ ../../../smpi_script/bin/smpirun -hostfile ${srcdir:=.}/hostfile_send_determin > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/running_power' to '1e9' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check communication determinism -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > [0.000000] [mc_global/INFO] Expanded states = 520 > [0.000000] [mc_global/INFO] Visited states = 1476 > [0.000000] [mc_global/INFO] Executed transitions = 1312 diff --git a/src/include/mc/mc.h b/src/include/mc/mc.h index 2bfe7ad44b..5657e8d96e 100644 --- a/src/include/mc/mc.h +++ b/src/include/mc/mc.h @@ -54,8 +54,6 @@ extern int _sg_mc_liveness; extern xbt_dynar_t mc_heap_comparison_ignore; extern xbt_dynar_t stacks_areas; -extern void *maestro_stack_start; -extern void *maestro_stack_end; /********************************* Global *************************************/ void _mc_cfg_cb_reduce(const char *name, int pos); diff --git a/src/mc/mc_checkpoint.c b/src/mc/mc_checkpoint.c index 8680749e64..cd4310a1df 100644 --- a/src/mc/mc_checkpoint.c +++ b/src/mc/mc_checkpoint.c @@ -39,8 +39,6 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_checkpoint, mc, "Logging specific to mc_checkpoint"); -char *libsimgrid_path; - /************************************ Free functions **************************************/ /*****************************************************************************************/ @@ -176,6 +174,7 @@ static void MC_snapshot_add_region(mc_snapshot_t snapshot, int type, static void MC_get_memory_regions(mc_snapshot_t snapshot) { + mc_process_t process = &mc_model_checker->process; void *start_heap = std_heap->base; void *end_heap = std_heap->breakval; @@ -185,8 +184,8 @@ static void MC_get_memory_regions(mc_snapshot_t snapshot) snapshot->privatization_regions = NULL; MC_snapshot_add_region(snapshot, 1, - mc_libsimgrid_info->start_rw, mc_libsimgrid_info->start_rw, - mc_libsimgrid_info->end_rw - mc_libsimgrid_info->start_rw); + process->libsimgrid_info->start_rw, process->libsimgrid_info->start_rw, + process->libsimgrid_info->end_rw - process->libsimgrid_info->start_rw); #ifdef HAVE_SMPI size_t i; @@ -199,7 +198,7 @@ static void MC_get_memory_regions(mc_snapshot_t snapshot) mc_mem_region_t ref_reg = mc_model_checker->parent_snapshot ? mc_model_checker->parent_snapshot->privatization_regions[i] : NULL; snapshot->privatization_regions[i] = - MC_region_new(-1, mc_binary_info->start_rw, smpi_privatisation_regions[i].address, size_data_exe, ref_reg); + MC_region_new(-1, process->binary_info->start_rw, smpi_privatisation_regions[i].address, size_data_exe, ref_reg); } snapshot->privatization_index = smpi_loaded_page; snapshot->regions[2] = NULL; @@ -207,50 +206,13 @@ static void MC_get_memory_regions(mc_snapshot_t snapshot) #endif { MC_snapshot_add_region(snapshot, 2, - mc_binary_info->start_rw, mc_binary_info->start_rw, - mc_binary_info->end_rw - mc_binary_info->start_rw); + process->binary_info->start_rw, process->binary_info->start_rw, + process->binary_info->end_rw - process->binary_info->start_rw); snapshot->privatization_regions = NULL; snapshot->privatization_index = -1; } } -/** @brief Finds the range of the different memory segments and binary paths */ -void MC_init_memory_map_info() -{ - - unsigned int i = 0; - s_map_region_t reg; - memory_map_t maps = MC_get_memory_map(); - - maestro_stack_start = NULL; - maestro_stack_end = NULL; - libsimgrid_path = NULL; - - while (i < maps->mapsize) { - reg = maps->regions[i]; - if (maps->regions[i].pathname == NULL) { - // Nothing to do - } else if ((reg.prot & PROT_WRITE) - && !memcmp(maps->regions[i].pathname, "[stack]", 7)) { - maestro_stack_start = reg.start_addr; - maestro_stack_end = reg.end_addr; - } else if ((reg.prot & PROT_READ) && (reg.prot & PROT_EXEC) - && !memcmp(basename(maps->regions[i].pathname), "libsimgrid", - 10)) { - if (libsimgrid_path == NULL) - libsimgrid_path = strdup(maps->regions[i].pathname); - } - i++; - } - - xbt_assert(maestro_stack_start, "maestro_stack_start"); - xbt_assert(maestro_stack_end, "maestro_stack_end"); - xbt_assert(libsimgrid_path, "libsimgrid_path&"); - - MC_free_memory_map(maps); - -} - /** \brief Fills the position of the segments (executable, read-only, read/write). * * TODO, use dl_iterate_phdr to be more robust @@ -324,6 +286,8 @@ static bool mc_valid_variable(dw_variable_t var, dw_frame_t scope, static void mc_fill_local_variables_values(mc_stack_frame_t stack_frame, dw_frame_t scope, int process_index, xbt_dynar_t result) { + mc_process_t process = &mc_model_checker->process; + void *ip = (void *) stack_frame->ip; if (ip < scope->low_pc || ip >= scope->high_pc) return; @@ -336,7 +300,7 @@ static void mc_fill_local_variables_values(mc_stack_frame_t stack_frame, continue; int region_type; - if ((long) stack_frame->ip > (long) mc_libsimgrid_info->start_exec) + if ((long) stack_frame->ip > (long) process->libsimgrid_info->start_exec) region_type = 1; else region_type = 2; @@ -407,6 +371,7 @@ static void MC_stack_frame_free_voipd(void *s) static xbt_dynar_t MC_unwind_stack_frames(void *stack_context) { + mc_process_t process = &mc_model_checker->process; xbt_dynar_t result = xbt_dynar_new(sizeof(mc_stack_frame_t), MC_stack_frame_free_voipd); @@ -435,7 +400,7 @@ static xbt_dynar_t MC_unwind_stack_frames(void *stack_context) // TODO, use real addresses in frame_t instead of fixing it here - dw_frame_t frame = MC_find_function_by_ip((void *) ip); + dw_frame_t frame = MC_process_find_function(process, (void *) ip); stack_frame->frame = frame; if (frame) { diff --git a/src/mc/mc_compare.cpp b/src/mc/mc_compare.cpp index 4745d3a4ee..c5395acc33 100644 --- a/src/mc/mc_compare.cpp +++ b/src/mc/mc_compare.cpp @@ -357,6 +357,7 @@ static int compare_local_variables(int process_index, int snapshot_compare(void *state1, void *state2) { + mc_process_t process = &mc_model_checker->process; mc_snapshot_t s1, s2; int num1, num2; @@ -546,7 +547,7 @@ int snapshot_compare(void *state1, void *state2) }; #endif - mc_object_info_t object_infos[] = { NULL, mc_libsimgrid_info, mc_binary_info }; + mc_object_info_t object_infos[] = { NULL, process->libsimgrid_info, process->binary_info }; int k = 0; for (k = 2; k != 0; --k) { @@ -558,7 +559,7 @@ int snapshot_compare(void *state1, void *state2) /* Compare global variables */ #ifdef HAVE_SMPI - if (object_infos[k] == mc_binary_info && smpi_privatize_global_variables) { + if (object_infos[k] == process->binary_info && smpi_privatize_global_variables) { // Compare the global variables separately for each simulates process: for (int process_index = 0; process_index < smpi_process_count(); process_index++) { is_diff = diff --git a/src/mc/mc_diff.c b/src/mc/mc_diff.c index 03dfb36aba..2566334954 100644 --- a/src/mc/mc_diff.c +++ b/src/mc/mc_diff.c @@ -20,7 +20,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_diff, xbt, xbt_dynar_t mc_heap_comparison_ignore; xbt_dynar_t stacks_areas; -void *maestro_stack_start, *maestro_stack_end; + /********************************* Backtrace ***********************************/ @@ -769,6 +769,7 @@ static int compare_heap_area_without_type(struct s_mc_diff *state, int process_i xbt_dynar_t previous, int size, int check_ignore) { + mc_process_t process = &mc_model_checker->process; int i = 0; void *addr_pointed1, *addr_pointed2; @@ -805,10 +806,10 @@ static int compare_heap_area_without_type(struct s_mc_diff *state, int process_i addr_pointed1 = mc_snapshot_read_pointer((char *) real_area1 + pointer_align, snapshot1, process_index); addr_pointed2 = mc_snapshot_read_pointer((char *) real_area2 + pointer_align, snapshot2, process_index); - if (addr_pointed1 > maestro_stack_start - && addr_pointed1 < maestro_stack_end - && addr_pointed2 > maestro_stack_start - && addr_pointed2 < maestro_stack_end) { + if (addr_pointed1 > process->maestro_stack_start + && addr_pointed1 < process->maestro_stack_end + && addr_pointed2 > process->maestro_stack_start + && addr_pointed2 < process->maestro_stack_end) { i = pointer_align + sizeof(void *); continue; } else if (addr_pointed1 > state->s_heap diff --git a/src/mc/mc_dwarf.c b/src/mc/mc_dwarf.c index 2b2c2a0aaa..b9cf927cb3 100644 --- a/src/mc/mc_dwarf.c +++ b/src/mc/mc_dwarf.c @@ -1172,48 +1172,6 @@ static void MC_make_functions_index(mc_object_info_t info) info->functions_index = index; } -mc_object_info_t MC_ip_find_object_info(void *ip) -{ - size_t i; - for (i = 0; i != mc_object_infos_size; ++i) { - if (ip >= (void *) mc_object_infos[i]->start_exec - && ip <= (void *) mc_object_infos[i]->end_exec) { - return mc_object_infos[i]; - } - } - return NULL; -} - -static dw_frame_t MC_find_function_by_ip_and_object(void *ip, - mc_object_info_t info) -{ - xbt_dynar_t dynar = info->functions_index; - mc_function_index_item_t base = - (mc_function_index_item_t) xbt_dynar_get_ptr(dynar, 0); - int i = 0; - int j = xbt_dynar_length(dynar) - 1; - while (j >= i) { - int k = i + ((j - i) / 2); - if (ip < base[k].low_pc) { - j = k - 1; - } else if (ip >= base[k].high_pc) { - i = k + 1; - } else { - return base[k].function; - } - } - return NULL; -} - -dw_frame_t MC_find_function_by_ip(void *ip) -{ - mc_object_info_t info = MC_ip_find_object_info(ip); - if (info == NULL) - return NULL; - else - return MC_find_function_by_ip_and_object(ip, info); -} - static void MC_post_process_variables(mc_object_info_t info) { unsigned cursor = 0; @@ -1408,7 +1366,7 @@ void MC_dwarf_register_variable(mc_object_info_t info, dw_frame_t frame, MC_dwarf_register_non_global_variable(info, frame, variable); } -void MC_post_process_object_info(mc_object_info_t info) +void MC_post_process_object_info(mc_process_t process, mc_object_info_t info) { xbt_dict_cursor_t cursor = NULL; char *key = NULL; @@ -1417,9 +1375,9 @@ void MC_post_process_object_info(mc_object_info_t info) // Resolve full_type: if (type->name && type->byte_size == 0) { - for (size_t i = 0; i != mc_object_infos_size; ++i) { + for (size_t i = 0; i != process->object_infos_size; ++i) { dw_type_t same_type = - xbt_dict_get_or_null(mc_object_infos[i]->full_types_by_name, + xbt_dict_get_or_null(process->object_infos[i]->full_types_by_name, type->name); if (same_type && same_type->name && same_type->byte_size) { type->full_type = same_type; diff --git a/src/mc/mc_forward.h b/src/mc/mc_forward.h index 58fde4cbde..de151e09d4 100644 --- a/src/mc/mc_forward.h +++ b/src/mc/mc_forward.h @@ -19,6 +19,7 @@ typedef struct s_dw_frame s_dw_frame_t, *dw_frame_t; typedef struct s_mc_pages_store s_mc_pages_store_t, *mc_pages_store_t; typedef struct s_mc_snapshot s_mc_snapshot_t, *mc_snapshot_t; +typedef struct s_mc_process s_mc_process_t, * mc_process_t; typedef struct s_mc_model_checker s_mc_model_checker_t, *mc_model_checker_t; extern mc_model_checker_t mc_model_checker; diff --git a/src/mc/mc_global.c b/src/mc/mc_global.c index 19f84ef514..e283c52d8d 100644 --- a/src/mc/mc_global.c +++ b/src/mc/mc_global.c @@ -8,11 +8,8 @@ #ifndef _XBT_WIN32 #include -#include #include #include -#include -#include #endif #include "simgrid/sg_config.h" @@ -59,14 +56,6 @@ xbt_fifo_t mc_stack = NULL; /* Liveness */ xbt_automaton_t _mc_property_automaton = NULL; -/* Variables */ -mc_object_info_t mc_libsimgrid_info = NULL; -mc_object_info_t mc_binary_info = NULL; - -mc_object_info_t mc_object_infos[2] = { NULL, NULL }; - -size_t mc_object_infos_size = 2; - /* Dot output */ FILE *dot_output = NULL; const char *colors[13]; @@ -104,28 +93,6 @@ static void MC_init_dot_output() } -static void MC_init_debug_info(void) -{ - XBT_INFO("Get debug information ..."); - - memory_map_t maps = MC_get_memory_map(); - - /* Get local variables for state equality detection */ - mc_binary_info = MC_find_object_info(maps, xbt_binary_name, 1); - mc_object_infos[0] = mc_binary_info; - - mc_libsimgrid_info = MC_find_object_info(maps, libsimgrid_path, 0); - mc_object_infos[1] = mc_libsimgrid_info; - - // Use information of the other objects: - MC_post_process_object_info(mc_binary_info); - MC_post_process_object_info(mc_libsimgrid_info); - - MC_free_memory_map(maps); - XBT_INFO("Get debug information done !"); -} - - mc_model_checker_t mc_model_checker = NULL; mc_model_checker_t MC_model_checker_new() @@ -134,6 +101,7 @@ mc_model_checker_t MC_model_checker_new() mc->pages = mc_pages_store_new(); mc->fd_clear_refs = -1; mc->fd_pagemap = -1; + MC_process_init(&mc->process, getpid()); return mc; } @@ -141,6 +109,7 @@ void MC_model_checker_delete(mc_model_checker_t mc) { mc_pages_store_delete(mc->pages); if(mc->record) xbt_dynar_free(&mc->record); + MC_process_clear(&mc->process); } void MC_init() @@ -162,9 +131,6 @@ void MC_init() mc_stats = xbt_new0(s_mc_stats_t, 1); mc_stats->state_size = 1; - MC_init_memory_map_info(); - MC_init_debug_info(); /* FIXME : get debug information only if liveness verification or visited state reduction */ - if ((_sg_mc_dot_output_file != NULL) && (_sg_mc_dot_output_file[0] != '\0')) MC_init_dot_output(); diff --git a/src/mc/mc_hash.c b/src/mc/mc_hash.c index cc78c3d7e2..0a194dadc2 100644 --- a/src/mc/mc_hash.c +++ b/src/mc/mc_hash.c @@ -171,10 +171,10 @@ top: mc_address_add(state->handled_addresses, pointed); // Anything outside the R/W segments and the heap is not hashed: - bool valid_pointer = (pointed >= (void *) mc_binary_info->start_rw - && pointed <= (void *) mc_binary_info->end_rw) - || (pointed >= (void *) mc_libsimgrid_info->start_rw - && pointed <= (void *) mc_libsimgrid_info->end_rw) + bool valid_pointer = (pointed >= (void *) binary_info->start_rw + && pointed <= (void *) binary_info->end_rw) + || (pointed >= (void *) libsimgrid_info->start_rw + && pointed <= (void *) libsimgrid_info->end_rw) || (pointed >= std_heap && pointed < (void *) ((const char *) std_heap + STD_HEAP_SIZE)); if (!valid_pointer) { @@ -220,10 +220,10 @@ static void mc_hash_object_globals(mc_hash_t * hash, mc_hashing_state * state, } const char *address = variable->address; - bool valid_pointer = (address >= mc_binary_info->start_rw - && address <= mc_binary_info->end_rw) - || (address >= mc_libsimgrid_info->start_rw - && address <= mc_libsimgrid_info->end_rw) + bool valid_pointer = (address >= binary_info->start_rw + && address <= binary_info->end_rw) + || (address >= libsimgrid_info->start_rw + && address <= libsimgrid_info->end_rw) || (address >= (const char *) std_heap && address < (const char *) std_heap + STD_HEAP_SIZE); if (!valid_pointer) @@ -285,12 +285,12 @@ static void mc_hash_stack(mc_hash_t * hash, mc_snapshot_stack_t stack, MC_HASH(*hash, stack_frame->ip); mc_object_info_t info; - if (stack_frame->ip >= (unw_word_t) mc_libsimgrid_info->start_exec - && stack_frame->ip < (unw_word_t) mc_libsimgrid_info->end_exec) - info = mc_libsimgrid_info; - else if (stack_frame->ip >= (unw_word_t) mc_binary_info->start_exec - && stack_frame->ip < (unw_word_t) mc_binary_info->end_exec) - info = mc_binary_info; + if (stack_frame->ip >= (unw_word_t) libsimgrid_info->start_exec + && stack_frame->ip < (unw_word_t) libsimgrid_info->end_exec) + info = libsimgrid_info; + else if (stack_frame->ip >= (unw_word_t) binary_info->start_exec + && stack_frame->ip < (unw_word_t) binary_info->end_exec) + info = binary_info; else continue; @@ -328,8 +328,8 @@ uint64_t mc_hash_processes_state(int num_state, xbt_dynar_t stacks) mc_hash_t hash = MC_HASH_INIT; MC_HASH(hash, xbt_swag_size(simix_global->process_list)); // process count - // mc_hash_object_globals(&hash, &state, mc_binary_info); - // mc_hash_object_globals(&hash, &state, mc_libsimgrid_info); + // mc_hash_object_globals(&hash, &state, binary_info); + // mc_hash_object_globals(&hash, &state, libsimgrid_info); // mc_hash_stacks(&hash, &state, stacks); mc_hash_state_destroy(&state); diff --git a/src/mc/mc_ignore.c b/src/mc/mc_ignore.c index 13cab5e2e2..9f3a0a7c31 100644 --- a/src/mc/mc_ignore.c +++ b/src/mc/mc_ignore.c @@ -175,27 +175,27 @@ void MC_remove_ignore_heap(void *address, size_t size) void MC_ignore_global_variable(const char *name) { - + mc_process_t process = &mc_model_checker->process; int raw_mem_set = (mmalloc_get_current_heap() == mc_heap); MC_SET_MC_HEAP; - xbt_assert(mc_libsimgrid_info, "MC subsystem not initialized"); + xbt_assert(process->libsimgrid_info, "MC subsystem not initialized"); unsigned int cursor = 0; dw_variable_t current_var; int start = 0; - int end = xbt_dynar_length(mc_libsimgrid_info->global_variables) - 1; + int end = xbt_dynar_length(process->libsimgrid_info->global_variables) - 1; while (start <= end) { cursor = (start + end) / 2; current_var = - (dw_variable_t) xbt_dynar_get_as(mc_libsimgrid_info->global_variables, + (dw_variable_t) xbt_dynar_get_as(process->libsimgrid_info->global_variables, cursor, dw_variable_t); if (strcmp(current_var->name, name) == 0) { - xbt_dynar_remove_at(mc_libsimgrid_info->global_variables, cursor, NULL); + xbt_dynar_remove_at(process->libsimgrid_info->global_variables, cursor, NULL); start = 0; - end = xbt_dynar_length(mc_libsimgrid_info->global_variables) - 1; + end = xbt_dynar_length(process->libsimgrid_info->global_variables) - 1; } else if (strcmp(current_var->name, name) < 0) { start = cursor + 1; } else { @@ -285,6 +285,8 @@ static void MC_ignore_local_variable_in_object(const char *var_name, void MC_ignore_local_variable(const char *var_name, const char *frame_name) { + mc_process_t process = &mc_model_checker->process; + int raw_mem_set = (mmalloc_get_current_heap() == mc_heap); @@ -293,9 +295,9 @@ void MC_ignore_local_variable(const char *var_name, const char *frame_name) MC_SET_MC_HEAP; - MC_ignore_local_variable_in_object(var_name, frame_name, mc_libsimgrid_info); + MC_ignore_local_variable_in_object(var_name, frame_name, process->libsimgrid_info); if (frame_name != NULL) - MC_ignore_local_variable_in_object(var_name, frame_name, mc_binary_info); + MC_ignore_local_variable_in_object(var_name, frame_name, process->binary_info); if (!raw_mem_set) MC_SET_STD_HEAP; diff --git a/src/mc/mc_memory.c b/src/mc/mc_memory.c index b474b0ced6..cfabdfcf33 100644 --- a/src/mc/mc_memory.c +++ b/src/mc/mc_memory.c @@ -45,9 +45,6 @@ void MC_memory_init() #include "xbt_modinter.h" void MC_memory_exit(void) { - MC_free_object_info(&mc_binary_info); - MC_free_object_info(&mc_libsimgrid_info); - if (mc_heap) xbt_mheap_destroy(mc_heap); } diff --git a/src/mc/mc_memory_map.h b/src/mc/mc_memory_map.h index afa2b58c67..12da85f89c 100644 --- a/src/mc/mc_memory_map.h +++ b/src/mc/mc_memory_map.h @@ -7,6 +7,8 @@ #ifndef MC_MEMORY_MAP_H #define MC_MEMORY_MAP_H +#include + #include #include "mc_forward.h" @@ -39,8 +41,7 @@ struct s_memory_map { }; -void MC_init_memory_map_info(void); -memory_map_t MC_get_memory_map(void); +memory_map_t MC_get_memory_map(pid_t pid); void MC_free_memory_map(memory_map_t map); SG_END_DECL() diff --git a/src/mc/mc_model_checker.h b/src/mc/mc_model_checker.h index 9ab2813c23..77bbfe00d2 100644 --- a/src/mc/mc_model_checker.h +++ b/src/mc/mc_model_checker.h @@ -10,6 +10,7 @@ #include #include "mc_forward.h" +#include "mc_process.h" SG_BEGIN_DECL() @@ -27,6 +28,7 @@ struct s_mc_model_checker { int fd_clear_refs; int fd_pagemap; xbt_dynar_t record; + s_mc_process_t process; }; mc_model_checker_t MC_model_checker_new(void); diff --git a/src/mc/mc_object_info.c b/src/mc/mc_object_info.c new file mode 100644 index 0000000000..35789e5ff7 --- /dev/null +++ b/src/mc/mc_object_info.c @@ -0,0 +1,26 @@ +#include + +#include + +#include "mc_object_info.h" +#include "mc_private.h" + +dw_frame_t MC_file_object_info_find_function(mc_object_info_t info, void *ip) +{ + xbt_dynar_t dynar = info->functions_index; + mc_function_index_item_t base = + (mc_function_index_item_t) xbt_dynar_get_ptr(dynar, 0); + int i = 0; + int j = xbt_dynar_length(dynar) - 1; + while (j >= i) { + int k = i + ((j - i) / 2); + if (ip < base[k].low_pc) { + j = k - 1; + } else if (ip >= base[k].high_pc) { + i = k + 1; + } else { + return base[k].function; + } + } + return NULL; +} diff --git a/src/mc/mc_object_info.h b/src/mc/mc_object_info.h index 2e0b68f43e..746a4102c2 100644 --- a/src/mc/mc_object_info.h +++ b/src/mc/mc_object_info.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2014. The SimGrid Team. + /* Copyright (c) 2007-2014. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -19,6 +19,7 @@ #include "mc_forward.h" #include "mc_location.h" +#include "mc_process.h" SG_BEGIN_DECL(); @@ -92,7 +93,9 @@ mc_object_info_t MC_new_object_info(void); mc_object_info_t MC_find_object_info(memory_map_t maps, char* name, int executable); void MC_free_object_info(mc_object_info_t* p); -void MC_post_process_object_info(mc_object_info_t info); +dw_frame_t MC_file_object_info_find_function(mc_object_info_t info, void *ip); + +void MC_post_process_object_info(mc_process_t process, mc_object_info_t info); void MC_dwarf_get_variables(mc_object_info_t info); void MC_dwarf_get_variables_libdw(mc_object_info_t info); @@ -102,11 +105,6 @@ const char* MC_dwarf_tagname(int tag); // Not used: char* get_type_description(mc_object_info_t info, char *type_name); -extern mc_object_info_t mc_libsimgrid_info; -extern mc_object_info_t mc_binary_info; -extern mc_object_info_t mc_object_infos[2]; -extern size_t mc_object_infos_size; - void* mc_member_resolve(const void* base, dw_type_t type, dw_type_t member, mc_snapshot_t snapshot, int process_index); struct s_dw_variable{ diff --git a/src/mc/mc_private.h b/src/mc/mc_private.h index 9e3d9ca5bf..679ca45cea 100644 --- a/src/mc/mc_private.h +++ b/src/mc/mc_private.h @@ -82,8 +82,6 @@ extern mc_stats_t mc_stats; void MC_print_statistics(mc_stats_t stats); -extern char *libsimgrid_path; - /********************************** Snapshot comparison **********************************/ typedef struct s_mc_comparison_times{ @@ -107,9 +105,6 @@ void print_comparison_times(void); /********************************** Variables with DWARF **********************************/ -dw_frame_t MC_find_function_by_ip(void* ip); -mc_object_info_t MC_ip_find_object_info(void* ip); - void MC_find_object_address(memory_map_t maps, mc_object_info_t result); /********************************** Miscellaneous **********************************/ diff --git a/src/mc/mc_process.c b/src/mc/mc_process.c new file mode 100644 index 0000000000..3200b34d25 --- /dev/null +++ b/src/mc/mc_process.c @@ -0,0 +1,118 @@ +#include + +#include +#include +#include // PROT_* + +#include + +#include "mc_process.h" +#include "mc_object_info.h" + +XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_process, mc, + "MC process information"); + +static void MC_init_memory_map_info(mc_process_t process); +static void MC_init_debug_info(mc_process_t process); + +void MC_process_init(mc_process_t process, pid_t pid) +{ + process->process_flags = MC_PROCESS_NO_FLAG; + process->pid = pid; + if (pid==getpid()) + process->process_flags |= MC_PROCESS_SELF_FLAG; + process->memory_map = MC_get_memory_map(pid); + MC_init_memory_map_info(process); + MC_init_debug_info(process); +} + +void MC_process_clear(mc_process_t process) +{ + process->process_flags = MC_PROCESS_NO_FLAG; + process->pid = 0; + MC_free_memory_map(process->memory_map); + process->memory_map = NULL; + process->maestro_stack_start = NULL; + process->maestro_stack_end = NULL; + free(process->libsimgrid_path); + process->libsimgrid_path = NULL; + MC_free_object_info(&process->binary_info); + MC_free_object_info(&process->libsimgrid_info); +} + +/** @brief Finds the range of the different memory segments and binary paths */ +static void MC_init_memory_map_info(mc_process_t process) +{ + process->maestro_stack_start = NULL; + process->maestro_stack_end = NULL; + process->libsimgrid_path = NULL; + + memory_map_t maps = process->memory_map; + + unsigned int i = 0; + while (i < maps->mapsize) { + map_region_t reg = &(maps->regions[i]); + if (maps->regions[i].pathname == NULL) { + // Nothing to do + } else if ((reg->prot & PROT_WRITE) + && !memcmp(maps->regions[i].pathname, "[stack]", 7)) { + process->maestro_stack_start = reg->start_addr; + process->maestro_stack_end = reg->end_addr; + } else if ((reg->prot & PROT_READ) && (reg->prot & PROT_EXEC) + && !memcmp(basename(maps->regions[i].pathname), "libsimgrid", + 10)) { + if (process->libsimgrid_path == NULL) + process->libsimgrid_path = strdup(maps->regions[i].pathname); + } + i++; + } + + xbt_assert(process->maestro_stack_start, "maestro_stack_start"); + xbt_assert(process->maestro_stack_end, "maestro_stack_end"); + xbt_assert(process->libsimgrid_path, "libsimgrid_path&"); +} + +static void MC_init_debug_info(mc_process_t process) +{ + XBT_INFO("Get debug information ..."); + + memory_map_t maps = process->memory_map; + + // TODO, fix binary name + + /* Get local variables for state equality detection */ + process->binary_info = MC_find_object_info(maps, xbt_binary_name, 1); + process->object_infos[0] = process->binary_info; + + process->libsimgrid_info = MC_find_object_info(maps, process->libsimgrid_path, 0); + process->object_infos[1] = process->libsimgrid_info; + + process->object_infos_size = 2; + + // Use information of the other objects: + MC_post_process_object_info(process, process->libsimgrid_info); + MC_post_process_object_info(process, process->binary_info); + + XBT_INFO("Get debug information done !"); +} + +mc_object_info_t MC_process_find_object_info(mc_process_t process, void *ip) +{ + size_t i; + for (i = 0; i != process->object_infos_size; ++i) { + if (ip >= (void *) process->object_infos[i]->start_exec + && ip <= (void *) process->object_infos[i]->end_exec) { + return process->object_infos[i]; + } + } + return NULL; +} + +dw_frame_t MC_process_find_function(mc_process_t process, void *ip) +{ + mc_object_info_t info = MC_process_find_object_info(process, ip); + if (info == NULL) + return NULL; + else + return MC_file_object_info_find_function(info, ip); +} diff --git a/src/mc/mc_process.h b/src/mc/mc_process.h new file mode 100644 index 0000000000..c0e9c45d4f --- /dev/null +++ b/src/mc/mc_process.h @@ -0,0 +1,46 @@ +/* Copyright (c) 2008-2014. The SimGrid Team. + * All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + +#ifndef MC_PROCESS_H +#define MC_PROCESS_H + +#include "simgrid_config.h" + +#include + +#include "mc_forward.h" +#include "mc_memory_map.h" + +SG_BEGIN_DECL() + +typedef enum { + MC_PROCESS_NO_FLAG = 0, + MC_PROCESS_SELF_FLAG = 1, +} e_mc_process_flags_t; + +/** Representation of a process + */ +struct s_mc_process { + e_mc_process_flags_t process_flags; + pid_t pid; + memory_map_t memory_map; + void *maestro_stack_start, *maestro_stack_end; + char *libsimgrid_path; + mc_object_info_t libsimgrid_info; + mc_object_info_t binary_info; + mc_object_info_t object_infos[2]; + size_t object_infos_size; +}; + +void MC_process_init(mc_process_t process, pid_t pid); +void MC_process_clear(mc_process_t process); + +mc_object_info_t MC_process_find_object_info(mc_process_t process, void* ip); +dw_frame_t MC_process_find_function(mc_process_t process, void* ip); + +SG_END_DECL() + +#endif diff --git a/src/mc/memory_map.c b/src/mc/memory_map.c index b867a86d6f..0d6a0667cb 100644 --- a/src/mc/memory_map.c +++ b/src/mc/memory_map.c @@ -4,41 +4,35 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ +#include + +#include + #include "mc_memory_map.h" #include "mc_private.h" -#include XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_memory_map, mc, "Logging specific to algorithms for memory_map"); -memory_map_t MC_get_memory_map(void) +memory_map_t MC_get_memory_map(pid_t pid) { - FILE *fp; /* File pointer to process's proc maps file */ - char *line = NULL; /* Temporal storage for each line that is readed */ - ssize_t read; /* Number of bytes readed */ - size_t n = 0; /* Amount of bytes to read by xbt_getline */ - memory_map_t ret = NULL; /* The memory map to return */ - -/* The following variables are used during the parsing of the file "maps" */ - s_map_region_t memreg; /* temporal map region used for creating the map */ - char *lfields[6], *tok, *endptr; - int i; - -/* Open the actual process's proc maps file and create the memory_map_t */ -/* to be returned. */ - fp = fopen("/proc/self/maps", "r"); - + /* Open the actual process's proc maps file and create the memory_map_t */ + /* to be returned. */ + char* path = bprintf("/proc/%i/maps", (int) pid); + FILE *fp = fopen(path, "r"); + free(path); if(fp == NULL) perror("fopen failed"); - xbt_assert(fp, - "Cannot open /proc/self/maps to investigate the memory map of the process. Please report this bug."); - + "Cannot open /proc/self/maps to investigate the memory map of the process. Please report this bug."); setbuf(fp, NULL); - ret = xbt_new0(s_memory_map_t, 1); + memory_map_t ret = xbt_new0(s_memory_map_t, 1); /* Read one line at the time, parse it and add it to the memory map to be returned */ + ssize_t read; /* Number of bytes readed */ + char* line = NULL; + size_t n = 0; /* Amount of bytes to read by xbt_getline */ while ((read = xbt_getline(&line, &n, fp)) != -1) { //fprintf(stderr,"%s", line); @@ -48,8 +42,10 @@ memory_map_t MC_get_memory_map(void) /* Tokenize the line using spaces as delimiters and store each token */ /* in lfields array. We expect 5 tokens/fields */ + char* lfields[6]; lfields[0] = strtok(line, " "); + int i; for (i = 1; i < 6 && lfields[i - 1] != NULL; i++) { lfields[i] = strtok(NULL, " "); } @@ -60,10 +56,12 @@ memory_map_t MC_get_memory_map(void) /* Ok we are good enough to try to get the info we need */ /* First get the start and the end address of the map */ - tok = strtok(lfields[0], "-"); + char *tok = strtok(lfields[0], "-"); if (tok == NULL) xbt_abort(); + s_map_region_t memreg; /* temporal map region used for creating the map */ + char *endptr; memreg.start_addr = (void *) strtoul(tok, &endptr, 16); /* Make sure that the entire string was an hex number */ if (*endptr != '\0') @@ -151,9 +149,7 @@ memory_map_t MC_get_memory_map(void) } free(line); - fclose(fp); - return ret; } diff --git a/teshsuite/mc/dwarf/dwarf.c b/teshsuite/mc/dwarf/dwarf.c index 8b22d4be31..5c84dfe524 100644 --- a/teshsuite/mc/dwarf/dwarf.c +++ b/teshsuite/mc/dwarf/dwarf.c @@ -17,6 +17,7 @@ #include "../../src/include/mc/datatypes.h" #include "../../src/mc/mc_object_info.h" #include "../../src/mc/mc_private.h" +#include "../../src/mc/mc_model_checker.h" int test_some_array[4][5][6]; struct some_struct { int first; int second[4][5]; } test_some_struct; @@ -97,6 +98,8 @@ static void test_local_variable(mc_object_info_t info, const char* function, con } static dw_variable_t test_global_variable(mc_object_info_t info, const char* name, void* address, long byte_size) { + mc_process_t process = &mc_model_checker->process; + dw_variable_t variable = find_global_variable_by_name(info, name); xbt_assert(variable, "Global variable %s was not found", name); xbt_assert(!strcmp(variable->name, name), "Name mismatch for %s", name); @@ -104,7 +107,7 @@ static dw_variable_t test_global_variable(mc_object_info_t info, const char* nam xbt_assert(variable->address == address, "Address mismatch for %s : %p expected but %p found", name, address, variable->address); - dw_type_t type = xbt_dict_get_or_null(mc_binary_info->types, variable->type_origin); + dw_type_t type = xbt_dict_get_or_null(process->binary_info->types, variable->type_origin); xbt_assert(type!=NULL, "Missing type for %s", name); xbt_assert(type->byte_size = byte_size, "Byte size mismatch for %s", name); return variable; @@ -125,7 +128,8 @@ int some_local_variable = 0; typedef struct foo {int i;} s_foo; static void test_type_by_name(s_foo my_foo) { - assert(xbt_dict_get_or_null(mc_binary_info->full_types_by_name, "struct foo")); + mc_process_t process = &mc_model_checker->process; + assert(xbt_dict_get_or_null(process->binary_info->full_types_by_name, "struct foo")); } int main(int argc, char** argv) { @@ -137,17 +141,19 @@ int main(int argc, char** argv) { dw_variable_t var; dw_type_t type; + + mc_process_t process = &mc_model_checker->process; - test_global_variable(mc_binary_info, "some_local_variable", &some_local_variable, sizeof(int)); + test_global_variable(process->binary_info, "some_local_variable", &some_local_variable, sizeof(int)); - var = test_global_variable(mc_binary_info, "test_some_array", &test_some_array, sizeof(test_some_array)); - type = xbt_dict_get_or_null(mc_binary_info->types, var->type_origin); + var = test_global_variable(process->binary_info, "test_some_array", &test_some_array, sizeof(test_some_array)); + type = xbt_dict_get_or_null(process->binary_info->types, var->type_origin); xbt_assert(type->element_count == 6*5*4, "element_count mismatch in test_some_array : %i / %i", type->element_count, 6*5*4); - var = test_global_variable(mc_binary_info, "test_some_struct", &test_some_struct, sizeof(test_some_struct)); - type = xbt_dict_get_or_null(mc_binary_info->types, var->type_origin); - assert(find_member(mc_binary_info, "first", type)->offset == 0); - assert(find_member(mc_binary_info, "second", type)->offset + var = test_global_variable(process->binary_info, "test_some_struct", &test_some_struct, sizeof(test_some_struct)); + type = xbt_dict_get_or_null(process->binary_info->types, var->type_origin); + assert(find_member(process->binary_info, "first", type)->offset == 0); + assert(find_member(process->binary_info, "second", type)->offset == ((const char*)&test_some_struct.second) - (const char*)&test_some_struct); unw_context_t context; @@ -155,11 +161,11 @@ int main(int argc, char** argv) { unw_getcontext(&context); unw_init_local(&cursor, &context); - test_local_variable(mc_binary_info, "main", "argc", &argc, &cursor); + test_local_variable(process->binary_info, "main", "argc", &argc, &cursor); { int lexical_block_variable = 50; - test_local_variable(mc_binary_info, "main", "lexical_block_variable", &lexical_block_variable, &cursor); + test_local_variable(process->binary_info, "main", "lexical_block_variable", &lexical_block_variable, &cursor); } s_foo my_foo; diff --git a/teshsuite/mc/dwarf/dwarf.tesh b/teshsuite/mc/dwarf/dwarf.tesh index 93e284be6d..49a59b7de2 100644 --- a/teshsuite/mc/dwarf/dwarf.tesh +++ b/teshsuite/mc/dwarf/dwarf.tesh @@ -1,5 +1,5 @@ #! ./tesh $ $SG_TEST_EXENV ${bindir:=.}/dwarf -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! diff --git a/teshsuite/smpi/isp/umpire/any_src-can-deadlock10.tesh b/teshsuite/smpi/isp/umpire/any_src-can-deadlock10.tesh index f004859ead..09eb6eb5c3 100644 --- a/teshsuite/smpi/isp/umpire/any_src-can-deadlock10.tesh +++ b/teshsuite/smpi/isp/umpire/any_src-can-deadlock10.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/any_src-can-deadlock4.tesh b/teshsuite/smpi/isp/umpire/any_src-can-deadlock4.tesh index cf03096b8d..8d5358122e 100644 --- a/teshsuite/smpi/isp/umpire/any_src-can-deadlock4.tesh +++ b/teshsuite/smpi/isp/umpire/any_src-can-deadlock4.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/any_src-can-deadlock5.tesh b/teshsuite/smpi/isp/umpire/any_src-can-deadlock5.tesh index bae9bc7f2c..6a12dea00e 100644 --- a/teshsuite/smpi/isp/umpire/any_src-can-deadlock5.tesh +++ b/teshsuite/smpi/isp/umpire/any_src-can-deadlock5.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/any_src-can-deadlock6.tesh b/teshsuite/smpi/isp/umpire/any_src-can-deadlock6.tesh index 3f32b3cb37..c0beee6cee 100644 --- a/teshsuite/smpi/isp/umpire/any_src-can-deadlock6.tesh +++ b/teshsuite/smpi/isp/umpire/any_src-can-deadlock6.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/any_src-wait-deadlock.tesh b/teshsuite/smpi/isp/umpire/any_src-wait-deadlock.tesh index 1567e6b667..3d689ff1df 100644 --- a/teshsuite/smpi/isp/umpire/any_src-wait-deadlock.tesh +++ b/teshsuite/smpi/isp/umpire/any_src-wait-deadlock.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/any_src-waitall-deadlock2.tesh b/teshsuite/smpi/isp/umpire/any_src-waitall-deadlock2.tesh index 9ae4cbe813..b5a6e75b9b 100644 --- a/teshsuite/smpi/isp/umpire/any_src-waitall-deadlock2.tesh +++ b/teshsuite/smpi/isp/umpire/any_src-waitall-deadlock2.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/any_src-waitall-deadlock3.tesh b/teshsuite/smpi/isp/umpire/any_src-waitall-deadlock3.tesh index 173b558fd2..d04e2b5a93 100644 --- a/teshsuite/smpi/isp/umpire/any_src-waitall-deadlock3.tesh +++ b/teshsuite/smpi/isp/umpire/any_src-waitall-deadlock3.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/any_src-waitany-deadlock.tesh b/teshsuite/smpi/isp/umpire/any_src-waitany-deadlock.tesh index 5a912d83c8..48c03a72d7 100644 --- a/teshsuite/smpi/isp/umpire/any_src-waitany-deadlock.tesh +++ b/teshsuite/smpi/isp/umpire/any_src-waitany-deadlock.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/any_src-waitany-deadlock2.tesh b/teshsuite/smpi/isp/umpire/any_src-waitany-deadlock2.tesh index fa30aa02b0..96b966a55e 100644 --- a/teshsuite/smpi/isp/umpire/any_src-waitany-deadlock2.tesh +++ b/teshsuite/smpi/isp/umpire/any_src-waitany-deadlock2.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/basic-deadlock-comm_create.tesh b/teshsuite/smpi/isp/umpire/basic-deadlock-comm_create.tesh index 6e0bd50505..43a827e589 100644 --- a/teshsuite/smpi/isp/umpire/basic-deadlock-comm_create.tesh +++ b/teshsuite/smpi/isp/umpire/basic-deadlock-comm_create.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/basic-deadlock-comm_dup.tesh b/teshsuite/smpi/isp/umpire/basic-deadlock-comm_dup.tesh index 585b2cfda7..1cd2981e1b 100644 --- a/teshsuite/smpi/isp/umpire/basic-deadlock-comm_dup.tesh +++ b/teshsuite/smpi/isp/umpire/basic-deadlock-comm_dup.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/basic-deadlock-comm_split.tesh b/teshsuite/smpi/isp/umpire/basic-deadlock-comm_split.tesh index 13b94e3b2c..9fca2973e9 100644 --- a/teshsuite/smpi/isp/umpire/basic-deadlock-comm_split.tesh +++ b/teshsuite/smpi/isp/umpire/basic-deadlock-comm_split.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/basic-deadlock.tesh b/teshsuite/smpi/isp/umpire/basic-deadlock.tesh index 9f1e0ce4ae..119a8bdd97 100644 --- a/teshsuite/smpi/isp/umpire/basic-deadlock.tesh +++ b/teshsuite/smpi/isp/umpire/basic-deadlock.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/bcast-deadlock.tesh b/teshsuite/smpi/isp/umpire/bcast-deadlock.tesh index b3908f903b..39dd474cc8 100644 --- a/teshsuite/smpi/isp/umpire/bcast-deadlock.tesh +++ b/teshsuite/smpi/isp/umpire/bcast-deadlock.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/collective-misorder-allreduce.tesh b/teshsuite/smpi/isp/umpire/collective-misorder-allreduce.tesh index 779979a899..ee9db16b47 100644 --- a/teshsuite/smpi/isp/umpire/collective-misorder-allreduce.tesh +++ b/teshsuite/smpi/isp/umpire/collective-misorder-allreduce.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/collective-misorder.tesh b/teshsuite/smpi/isp/umpire/collective-misorder.tesh index 9401a31e93..276dad83b0 100644 --- a/teshsuite/smpi/isp/umpire/collective-misorder.tesh +++ b/teshsuite/smpi/isp/umpire/collective-misorder.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/complex-deadlock.tesh b/teshsuite/smpi/isp/umpire/complex-deadlock.tesh index a094d85fb8..494bb31443 100644 --- a/teshsuite/smpi/isp/umpire/complex-deadlock.tesh +++ b/teshsuite/smpi/isp/umpire/complex-deadlock.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/deadlock-config.tesh b/teshsuite/smpi/isp/umpire/deadlock-config.tesh index 5c9869eaba..a6c365bb7d 100644 --- a/teshsuite/smpi/isp/umpire/deadlock-config.tesh +++ b/teshsuite/smpi/isp/umpire/deadlock-config.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > WARNING: This test depends on the MPI's eager limit. Set it appropriately. > Initializing (0 of 3) > (0) is alive on Tremblay diff --git a/teshsuite/smpi/isp/umpire/finalize-deadlock.tesh b/teshsuite/smpi/isp/umpire/finalize-deadlock.tesh index d4476a3960..39e3f4de38 100644 --- a/teshsuite/smpi/isp/umpire/finalize-deadlock.tesh +++ b/teshsuite/smpi/isp/umpire/finalize-deadlock.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/irecv-deadlock.tesh b/teshsuite/smpi/isp/umpire/irecv-deadlock.tesh index 3bc6c8663b..ece4bd8f93 100644 --- a/teshsuite/smpi/isp/umpire/irecv-deadlock.tesh +++ b/teshsuite/smpi/isp/umpire/irecv-deadlock.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/no-error.tesh b/teshsuite/smpi/isp/umpire/no-error.tesh index 9cb94eb226..6a0d3374d8 100644 --- a/teshsuite/smpi/isp/umpire/no-error.tesh +++ b/teshsuite/smpi/isp/umpire/no-error.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/no-error2.tesh b/teshsuite/smpi/isp/umpire/no-error2.tesh index 9bb6debe8e..5f13a068bf 100644 --- a/teshsuite/smpi/isp/umpire/no-error2.tesh +++ b/teshsuite/smpi/isp/umpire/no-error2.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/no-error3-any_src.tesh b/teshsuite/smpi/isp/umpire/no-error3-any_src.tesh index 5cecb6574b..70843ef6f4 100644 --- a/teshsuite/smpi/isp/umpire/no-error3-any_src.tesh +++ b/teshsuite/smpi/isp/umpire/no-error3-any_src.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard diff --git a/teshsuite/smpi/isp/umpire/no-error3.tesh b/teshsuite/smpi/isp/umpire/no-error3.tesh index 1512434813..b4e40d5537 100644 --- a/teshsuite/smpi/isp/umpire/no-error3.tesh +++ b/teshsuite/smpi/isp/umpire/no-error3.tesh @@ -10,8 +10,8 @@ $ ${bindir:=.}/../../../../bin/smpirun -hostfile ../../hostfile -platform ../../ > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/coll_selector' to 'mpich' > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s) > [0.000000] [mc_global/INFO] Check a safety property -> [0.000000] [mc_global/INFO] Get debug information ... -> [0.000000] [mc_global/INFO] Get debug information done ! +> [0.000000] [mc_process/INFO] Get debug information ... +> [0.000000] [mc_process/INFO] Get debug information done ! > (0) is alive on Tremblay > (1) is alive on Jupiter > (2) is alive on Fafard