X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/bdfe4f8674f98efbf2d67ad854ef83a1d5f855ed..7f9520d8bbb96e3af373f0f1af5dc268359fdd7e:/src/mc/mc_global.c diff --git a/src/mc/mc_global.c b/src/mc/mc_global.c index 242b413fc1..16ebebe384 100644 --- a/src/mc/mc_global.c +++ b/src/mc/mc_global.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2008-2013. The SimGrid Team. +/* Copyright (c) 2008-2014. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -35,9 +35,8 @@ char *_sg_mc_dot_output_file = NULL; int user_max_depth_reached = 0; -extern int _sg_init_status; void _mc_cfg_cb_reduce(const char *name, int pos) { - if (_sg_init_status && !_sg_do_model_check) { + if (_sg_cfg_init_status && !_sg_do_model_check) { xbt_die("You are specifying a reduction strategy after the initialization (through MSG_config?), but model-checking was not activated at config time (through --cfg=model-check:1). This won't work, sorry."); } char *val= xbt_cfg_get_string(_sg_cfg_set, name); @@ -51,41 +50,41 @@ void _mc_cfg_cb_reduce(const char *name, int pos) { } void _mc_cfg_cb_checkpoint(const char *name, int pos) { - if (_sg_init_status && !_sg_do_model_check) { + if (_sg_cfg_init_status && !_sg_do_model_check) { xbt_die("You are specifying a checkpointing value after the initialization (through MSG_config?), but model-checking was not activated at config time (through --cfg=model-check:1). This won't work, sorry."); } _sg_mc_checkpoint = xbt_cfg_get_int(_sg_cfg_set, name); } void _mc_cfg_cb_property(const char *name, int pos) { - if (_sg_init_status && !_sg_do_model_check) { + if (_sg_cfg_init_status && !_sg_do_model_check) { xbt_die("You are specifying a property after the initialization (through MSG_config?), but model-checking was not activated at config time (through --cfg=model-check:1). This won't work, sorry."); } _sg_mc_property_file= xbt_cfg_get_string(_sg_cfg_set, name); } void _mc_cfg_cb_timeout(const char *name, int pos) { - if (_sg_init_status && !_sg_do_model_check) { + if (_sg_cfg_init_status && !_sg_do_model_check) { xbt_die("You are specifying a value to enable/disable timeout for wait requests after the initialization (through MSG_config?), but model-checking was not activated at config time (through --cfg=model-check:1). This won't work, sorry."); } _sg_mc_timeout= xbt_cfg_get_boolean(_sg_cfg_set, name); } void _mc_cfg_cb_max_depth(const char *name, int pos) { - if (_sg_init_status && !_sg_do_model_check) { + if (_sg_cfg_init_status && !_sg_do_model_check) { xbt_die("You are specifying a max depth value after the initialization (through MSG_config?), but model-checking was not activated at config time (through --cfg=model-check:1). This won't work, sorry."); } _sg_mc_max_depth= xbt_cfg_get_int(_sg_cfg_set, name); } void _mc_cfg_cb_visited(const char *name, int pos) { - if (_sg_init_status && !_sg_do_model_check) { + if (_sg_cfg_init_status && !_sg_do_model_check) { xbt_die("You are specifying a number of stored visited states after the initialization (through MSG_config?), but model-checking was not activated at config time (through --cfg=model-check:1). This won't work, sorry."); } _sg_mc_visited= xbt_cfg_get_int(_sg_cfg_set, name); } void _mc_cfg_cb_dot_output(const char *name, int pos) { - if (_sg_init_status && !_sg_do_model_check) { + if (_sg_cfg_init_status && !_sg_do_model_check) { xbt_die("You are specifying a file name for a dot output of graph state after the initialization (through MSG_config?), but model-checking was not activated at config time (through --cfg=model-check:1). This won't work, sorry."); } _sg_mc_dot_output_file= xbt_cfg_get_string(_sg_cfg_set, name); @@ -185,7 +184,7 @@ static dw_location_t MC_dwarf_get_location(xbt_dict_t location_list, char *expr) if(location_list != NULL){ - char *key = bprintf("%d", (int)strtoul(expr, NULL, 16)); + char *key = bprintf("%lu", strtoul(expr, NULL, 16)); loc->type = e_dw_loclist; loc->location.loclist = (xbt_dynar_t)xbt_dict_get_or_null(location_list, key); if(loc->location.loclist == NULL) @@ -404,7 +403,7 @@ static xbt_dict_t MC_dwarf_get_location_list(const char *elf_file){ } - char *key = bprintf("%d", (int)strtoul((char *)xbt_dynar_get_as(split, 0, char *), NULL, 16)); + char *key = bprintf("%lu", strtoul((char *)xbt_dynar_get_as(split, 0, char *), NULL, 16)); xbt_dict_set(location_list, key, loclist, NULL); xbt_free(key); @@ -743,7 +742,7 @@ static void MC_dwarf_get_variables(const char *elf_file, xbt_dict_t location_lis xbt_dynar_free(&split2); split2 = xbt_str_split(loc_expr, " "); if(strcmp(elf_file, xbt_binary_name) != 0) - var->address.address = (char *)start_text_libsimgrid + (long)((void *)strtoul(xbt_dynar_get_as(split2, xbt_dynar_length(split2) - 1, char*), NULL, 16)); + var->address.address = (char *)start_text_libsimgrid + strtoul(xbt_dynar_get_as(split2, xbt_dynar_length(split2) - 1, char*), NULL, 16); else var->address.address = (void *)strtoul(xbt_dynar_get_as(split2, xbt_dynar_length(split2) - 1, char*), NULL, 16); }else{ @@ -756,7 +755,7 @@ static void MC_dwarf_get_variables(const char *elf_file, xbt_dict_t location_lis global_address = xbt_strdup(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *)); xbt_str_rtrim(global_address, ")"); if(strcmp(elf_file, xbt_binary_name) != 0) - var->address.address = (char *)start_text_libsimgrid + (long)((void *)strtoul(global_address, NULL, 16)); + var->address.address = (char *)start_text_libsimgrid + strtoul(global_address, NULL, 16); else var->address.address = (void *)strtoul(global_address, NULL, 16); xbt_free(global_address); @@ -1758,11 +1757,19 @@ void MC_init(){ MC_ignore_global_variable("mc_snapshot_comparison_time"); MC_ignore_global_variable("mc_time"); MC_ignore_global_variable("smpi_current_rank"); - MC_ignore_global_variable("smx_current_context_serial"); - MC_ignore_global_variable("smx_current_context_key"); - MC_ignore_global_variable("sysv_maestro_context"); MC_ignore_global_variable("counter"); /* Static variable used for tracing */ - + MC_ignore_global_variable("maestro_stack_start"); + MC_ignore_global_variable("maestro_stack_end"); + + MC_ignore_heap(&(simix_global->process_to_run), sizeof(simix_global->process_to_run)); + MC_ignore_heap(&(simix_global->process_that_ran), sizeof(simix_global->process_that_ran)); + MC_ignore_heap(simix_global->process_to_run, sizeof(*(simix_global->process_to_run))); + MC_ignore_heap(simix_global->process_that_ran, sizeof(*(simix_global->process_that_ran))); + + smx_process_t process; + xbt_swag_foreach(process, simix_global->process_list){ + MC_ignore_heap(&(process->process_hookup), sizeof(process->process_hookup)); + } if(raw_mem_set) MC_SET_RAW_MEM; @@ -1868,7 +1875,7 @@ void MC_modelcheck_safety(void) MC_SET_RAW_MEM; /* Save the initial state */ initial_state_safety = xbt_new0(s_mc_global_t, 1); - initial_state_safety->snapshot = MC_take_snapshot(); + initial_state_safety->snapshot = MC_take_snapshot(0); MC_UNSET_RAW_MEM; MC_dpor();