Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of https://framagit.org/simgrid/simgrid
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Thu, 16 May 2019 06:44:48 +0000 (08:44 +0200)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Thu, 16 May 2019 06:44:48 +0000 (08:44 +0200)
200 files changed:
CMakeLists.txt
ChangeLog
docs/source/Configuring_SimGrid.rst
docs/source/Installing_SimGrid.rst
docs/source/Tutorial_Algorithms.rst
docs/source/Tutorial_MPI_Applications.rst
docs/source/app_smpi.rst
docs/source/community.rst
docs/source/platform_howtos.rst
docs/source/platform_reference.rst
examples/deprecated/msg/app-masterworker/app-masterworker-multicore.tesh
examples/deprecated/msg/app-masterworker/app-masterworker-vivaldi.tesh
examples/deprecated/msg/app-masterworker/app-masterworker.tesh
examples/deprecated/msg/cloud-masterworker/cloud-masterworker.tesh
examples/deprecated/msg/dht-kademlia/dht-kademlia.tesh
examples/deprecated/msg/dht-pastry/dht-pastry.tesh
examples/deprecated/msg/energy-vm/energy-vm.tesh
examples/deprecated/msg/mc/bugged1.tesh
examples/deprecated/msg/mc/bugged2.tesh
examples/deprecated/msg/platform-failures/platform-failures.c
examples/deprecated/msg/platform-failures/platform-failures.tesh
examples/deprecated/msg/process-create/process-create.tesh
examples/deprecated/msg/synchro-semaphore/synchro-semaphore.tesh
examples/deprecated/msg/trace-categories/trace-categories.tesh
examples/deprecated/msg/trace-host-user-variables/trace-host-user-variables.tesh
examples/deprecated/msg/trace-link-user-variables/trace-link-user-variables.tesh
examples/deprecated/msg/trace-masterworker/trace-masterworker.tesh
examples/deprecated/msg/trace-process-migration/trace-process-migration.tesh
examples/deprecated/msg/trace-route-user-variables/trace-route-user-variables.tesh
examples/deprecated/simdag/dag-dotload/sd_dag-dotload.tesh
examples/deprecated/simdag/daxload/sd_daxload.tesh
examples/deprecated/simdag/fail/sd_fail.tesh
examples/deprecated/simdag/properties/sd_properties.tesh
examples/deprecated/simdag/ptg-dotload/sd_ptg-dotload.tesh
examples/deprecated/simdag/schedule-dotload/sd_schedule-dotload.tesh
examples/deprecated/simdag/scheduling/sd_scheduling.tesh
examples/deprecated/simdag/test/sd_test.tesh
examples/deprecated/simdag/throttling/sd_throttling.tesh
examples/deprecated/simdag/typed_tasks/sd_typed_tasks.tesh
examples/s4u/CMakeLists.txt
examples/s4u/README.rst
examples/s4u/actor-create/s4u-actor-create.tesh
examples/s4u/actor-daemon/s4u-actor-daemon.tesh
examples/s4u/actor-exiting/s4u-actor-exiting.tesh
examples/s4u/actor-join/s4u-actor-join.tesh
examples/s4u/actor-kill/s4u-actor-kill.tesh
examples/s4u/actor-lifetime/s4u-actor-lifetime.tesh
examples/s4u/actor-migrate/s4u-actor-migrate.tesh
examples/s4u/actor-suspend/s4u-actor-suspend.tesh
examples/s4u/actor-yield/s4u-actor-yield.tesh
examples/s4u/app-bittorrent/s4u-app-bittorrent.tesh
examples/s4u/app-chainsend/s4u-app-chainsend.tesh
examples/s4u/app-masterworkers/s4u-app-masterworkers.tesh
examples/s4u/app-pingpong/s4u-app-pingpong.tesh
examples/s4u/app-pingpong/simix-breakpoint.tesh
examples/s4u/app-token-ring/s4u-app-token-ring.tesh
examples/s4u/async-ready/s4u-async-ready.tesh
examples/s4u/async-wait/s4u-async-wait.tesh
examples/s4u/async-waitall/s4u-async-waitall.tesh
examples/s4u/async-waitany/s4u-async-waitany.tesh
examples/s4u/async-waituntil/s4u-async-waituntil.tesh
examples/s4u/cloud-capping/s4u-cloud-capping.tesh
examples/s4u/cloud-migration/s4u-cloud-migration.tesh
examples/s4u/cloud-simple/s4u-cloud-simple.tesh
examples/s4u/dht-chord/s4u-dht-chord.tesh
examples/s4u/dht-kademlia/s4u-dht-kademlia.tesh
examples/s4u/energy-boot/s4u-energy-boot.tesh
examples/s4u/energy-exec/s4u-energy-exec.tesh
examples/s4u/energy-link/s4u-energy-link.tesh
examples/s4u/energy-vm/s4u-energy-vm.tesh
examples/s4u/engine-filtering/s4u-engine-filtering.tesh
examples/s4u/exec-async/s4u-exec-async.tesh
examples/s4u/exec-basic/s4u-exec-basic.tesh
examples/s4u/exec-dvfs/s4u-exec-dvfs.tesh
examples/s4u/exec-ptask/s4u-exec-ptask.tesh
examples/s4u/exec-remote/s4u-exec-remote.tesh
examples/s4u/io-async/s4u-io-async.tesh
examples/s4u/io-file-remote/s4u-io-file-remote.tesh
examples/s4u/io-file-system/s4u-io-file-system.tesh
examples/s4u/io-storage-raw/s4u-io-storage-raw.tesh
examples/s4u/maestro-set/s4u-maestro-set.tesh
examples/s4u/mc-failing-assert/s4u-mc-failing-assert.cpp [new file with mode: 0644]
examples/s4u/mc-failing-assert/s4u-mc-failing-assert.tesh [new file with mode: 0644]
examples/s4u/platform-failures/s4u-platform-failures.tesh
examples/s4u/platform-profile/s4u-platform-profile.tesh
examples/s4u/platform-properties/s4u-platform-properties.tesh
examples/s4u/plugin-hostload/s4u-plugin-hostload.tesh
examples/s4u/routing-get-clusters/s4u-routing-get-clusters.tesh
examples/s4u/synchro-barrier/s4u-synchro-barrier.tesh
examples/s4u/synchro-mutex/s4u-synchro-mutex.tesh
examples/s4u/synchro-semaphore/s4u-synchro-semaphore.tesh
examples/s4u/trace-platform/s4u-trace-platform.tesh
examples/smpi/trace_call_location/trace_call_location.tesh
include/simgrid/s4u/Comm.hpp
include/simgrid/s4u/Exec.hpp
include/simgrid/s4u/Io.hpp
sonar-project.properties
src/bindings/java/org/simgrid/msg/VM.java
src/mc/ModelChecker.cpp
src/mc/VisitedState.cpp
src/mc/checker/LivenessChecker.cpp
src/mc/checker/SafetyChecker.cpp
src/mc/compare.cpp
src/mc/mc_client_api.cpp
src/mc/mc_config.cpp
src/mc/mc_config.hpp
src/mc/mc_global.cpp
src/mc/mc_mmu.hpp
src/mc/mc_private.hpp
src/mc/mc_record.cpp
src/mc/mc_record.hpp
src/mc/mc_smx.cpp
src/mc/sosp/RegionSnapshot.cpp
src/mc/sosp/RegionSnapshot.hpp
src/mc/sosp/mc_checkpoint.cpp
src/mc/sosp/mc_page_snapshot.cpp [deleted file]
src/mc/sosp/mc_snapshot.cpp
src/mc/sosp/mc_snapshot.hpp
src/smpi/bindings/smpi_pmpi.cpp
src/smpi/colls/allgather/allgather-2dmesh.cpp
src/smpi/colls/alltoall/alltoall-2dmesh.cpp
src/smpi/colls/bcast/bcast-arrival-scatter.cpp
src/smpi/internals/smpi_global.cpp
src/smpi/mpi/smpi_comm.cpp
src/smpi/mpi/smpi_request.cpp
src/smpi/mpi/smpi_topo.cpp
src/smpi/smpitools.sh
src/surf/HostImpl.cpp
src/surf/StorageImpl.cpp
src/surf/StorageImpl.hpp
src/surf/cpu_interface.hpp
src/surf/cpu_ti.hpp
src/surf/ptask_L07.cpp
src/surf/ptask_L07.hpp
src/surf/storage_n11.cpp
src/surf/storage_n11.hpp
src/xbt/memory_map.cpp
src/xbt/memory_map.hpp
teshsuite/lua/lua_platforms.tesh
teshsuite/mc/dwarf-expression/dwarf-expression.tesh
teshsuite/mc/dwarf/dwarf.tesh
teshsuite/mc/random-bug/random-bug-report.tesh
teshsuite/msg/app-chainsend/app-chainsend.tesh
teshsuite/msg/app-pingpong/app-pingpong.tesh
teshsuite/msg/app-token-ring/app-token-ring.tesh
teshsuite/msg/async-wait/async-wait.tesh
teshsuite/msg/async-waitall/async-waitall.tesh
teshsuite/msg/async-waitany/async-waitany.tesh
teshsuite/msg/cloud-capping/cloud-capping.tesh
teshsuite/msg/cloud-migration/cloud-migration.tesh
teshsuite/msg/cloud-simple/cloud-simple.tesh
teshsuite/msg/cloud-two-tasks/cloud-two-tasks.tesh
teshsuite/msg/energy-consumption/energy-consumption.tesh
teshsuite/msg/energy-pstate/energy-pstate.tesh
teshsuite/msg/energy-ptask/energy-ptask.tesh
teshsuite/msg/host_on_off_processes/host_on_off_processes.cpp
teshsuite/msg/host_on_off_processes/host_on_off_processes.tesh
teshsuite/msg/io-file-remote/io-file-remote.tesh
teshsuite/msg/io-raw-storage/io-raw-storage.tesh
teshsuite/msg/platform-properties/platform-properties.tesh
teshsuite/msg/plugin-hostload/plugin-hostload.tesh
teshsuite/msg/process-daemon/process-daemon.tesh
teshsuite/msg/process-join/process-join.tesh
teshsuite/msg/process-kill/process-kill.tesh
teshsuite/msg/process-lifetime/process-lifetime.tesh
teshsuite/msg/process-migration/process-migration.tesh
teshsuite/msg/process-suspend/process-suspend.tesh
teshsuite/msg/process-yield/process-yield.tesh
teshsuite/msg/task-priority/task-priority.tesh
teshsuite/s4u/actor-migration/actor-migration.tesh
teshsuite/s4u/cloud-interrupt-migration/cloud-interrupt-migration.tesh
teshsuite/s4u/concurrent_rw/concurrent_rw.tesh
teshsuite/s4u/storage_client_server/storage_client_server.tesh
teshsuite/simdag/CMakeLists.txt
teshsuite/simdag/flatifier/bogus_disk_attachment.tesh
teshsuite/simdag/flatifier/bogus_missing_gateway.tesh
teshsuite/simdag/flatifier/bogus_two_hosts_asymetric.tesh
teshsuite/simdag/flatifier/flatifier.tesh
teshsuite/simix/CMakeLists.txt
teshsuite/smpi/privatization/privatization.c
teshsuite/smpi/pt2pt-dsend/pt2pt-dsend.c
teshsuite/surf/lmm_usage/lmm_usage.tesh
teshsuite/surf/maxmin_bench/maxmin_bench_large.tesh
teshsuite/surf/maxmin_bench/maxmin_bench_medium.tesh
teshsuite/surf/maxmin_bench/maxmin_bench_small.tesh
teshsuite/surf/surf_usage/surf_usage.tesh
teshsuite/surf/surf_usage2/surf_usage2.tesh
teshsuite/xbt/log_usage/log_usage.tesh
teshsuite/xbt/log_usage/log_usage_ndebug.tesh
teshsuite/xbt/parmap_bench/parmap_bench.tesh
tools/cmake/DefinePackages.cmake
tools/cmake/MakeLib.cmake
tools/cmake/Option.cmake
tools/cmake/Tests.cmake
tools/cmake/scripts/my_valgrind.pl
tools/cmake/scripts/update_tesh.pl
tools/docker/Dockerfile.tuto-mc [new file with mode: 0644]
tools/docker/Makefile
tools/jenkins/build.sh
tools/jenkins/project_description.sh

index 34d5caa..12d1189 100644 (file)
@@ -396,7 +396,7 @@ endif()
 
 if(enable_smpi)
   SET(HAVE_SMPI 1)
-  if("${CMAKE_SYSTEM}" MATCHES "Darwin|FreeBSD|Linux")
+  if("${CMAKE_SYSTEM}" MATCHES "Darwin|FreeBSD|Linux|SunOS")
     SET(HAVE_PRIVATIZATION 1)
   else()
     message (STATUS "Warning:  no support for SMPI automatic privatization on this platform")
index a967110..91fbb8c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -12,6 +12,9 @@ SMPI:
  - MPI/IO is now supported over the Storage API (no files are written or read, storage is simulated). Supported calls are all synchronous ones.
  - MPI interface is now const correct for input parameters
 
+Model-checker:
+ - Remove option 'model-check/record': Paths are recorded in any cases now.
+
 Fixed bugs (GH=GitHub; FG=FramaGit):
  - FG#10: Can not use MSG_process_set_data from SMPI any more
  - FG#11: Auto-restart actors forget their on_exit behavior
index 1aa55d8..ac9affc 100644 (file)
@@ -33,7 +33,7 @@ example, to set the item ``Item`` to the value ``Value``, simply
 type the following on the command-line:
 
 .. code-block:: shell
-               
+
    my_simulator --cfg=Item:Value (other arguments)
 
 Several ``--cfg`` command line arguments can naturally be used. If you
@@ -52,7 +52,7 @@ can be done by adding the following to the beginning of your platform
 file:
 
 .. code-block:: xml
-               
+
   <config>
     <prop id="Item" value="Value"/>
   </config>
@@ -61,19 +61,19 @@ A last solution is to pass your configuration directly in your program
 with :cpp:func:`simgrid::s4u::Engine::set_config` or :cpp:func:`MSG_config`.
 
 .. code-block:: cpp
-               
+
    #include <simgrid/s4u.hpp>
 
    int main(int argc, char *argv[]) {
      simgrid::s4u::Engine e(&argc, argv);
-     
+
      e->set_config("Item:Value");
-     
+
      // Rest of your code
    }
 
 .. _options_list:
-   
+
 Existing Configuration Items
 ----------------------------
 
@@ -110,7 +110,6 @@ Existing Configuration Items
 - **model-check/hash:** :ref:`cfg=model-checker/hash`
 - **model-check/max-depth:** :ref:`cfg=model-check/max-depth`
 - **model-check/property:** :ref:`cfg=model-check/property`
-- **model-check/record:** :ref:`cfg=model-check/record`
 - **model-check/reduction:** :ref:`cfg=model-check/reduction`
 - **model-check/replay:** :ref:`cfg=model-check/replay`
 - **model-check/send-determinism:** :ref:`cfg=model-check/send-determinism`
@@ -193,13 +192,13 @@ models). Also, ``--help-models`` should provide information about all
 models for all existing resources.
 
 - ``network/model``: specify the used network model. Possible values:
-  
+
   - **LV08 (default one):** Realistic network analytic model
     (slow-start modeled by multiplying latency by 13.01, bandwidth by
     .97; bottleneck sharing uses a payload of S=20537 for evaluating
     RTT). Described in `Accuracy Study and Improvement of Network
     Simulation in the SimGrid Framework
-    <http://mescal.imag.fr/membres/arnaud.legrand/articles/simutools09.pdf>`_.     
+    <http://mescal.imag.fr/membres/arnaud.legrand/articles/simutools09.pdf>`_.
   - **Constant:** Simplistic network model where all communication
     take a constant time (one second). This model provides the lowest
     realism, but is (marginally) faster.
@@ -219,11 +218,11 @@ models for all existing resources.
     <ftp://ftp.ens-lyon.fr/pub/LIP/Rapports/RR/RR2002/RR2002-40.ps.gz>`_.
   - **Reno/Reno2/Vegas:** Models from Steven H. Low using lagrange_solve instead of
     lmm_solve (experts only; check the code for more info).
-  - **NS3** (only available if you compiled SimGrid accordingly): 
+  - **NS3** (only available if you compiled SimGrid accordingly):
     Use the packet-level network
     simulators as network models (see :ref:`pls_ns3`).
     This model can be :ref:`further configured <options_pls>`.
-    
+
 - ``cpu/model``: specify the used CPU model.  We have only one model
   for now:
 
@@ -238,7 +237,7 @@ models for all existing resources.
   allow parallel tasks because these beasts need some collaboration
   between the network and CPU model. That is why, ptask_07 is used by
   default when using SimDag.
-  
+
   - **default:** Default host model. Currently, CPU:Cas01 and
     network:LV08 (with cross traffic enabled)
   - **compound:** Host model that is automatically chosen if
@@ -264,7 +263,7 @@ is, all our analytical models) accept specific optimization
 configurations.
 
   - items ``network/optim`` and ``cpu/optim`` (both default to 'Lazy'):
-    
+
     - **Lazy:** Lazy action management (partial invalidation in lmm +
       heap in action remaining).
     - **TI:** Trace integration. Highly optimized mode when using
@@ -272,7 +271,7 @@ configurations.
       now).
     - **Full:** Full update of remaining and variables. Slow but may be
       useful when debugging.
-      
+
   - items ``network/maxmin-selective-update`` and
     ``cpu/maxmin-selective-update``: configure whether the underlying
     should be lazily updated or not. It should have no impact on the
@@ -340,7 +339,7 @@ be retrieved using the following commands. Both give a set of values,
 and you should use the last one, which is the maximal size.
 
 .. code-block:: shell
-               
+
    cat /proc/sys/net/ipv4/tcp_rmem # gives the sender window
    cat /proc/sys/net/ipv4/tcp_wmem # gives the receiver window
 
@@ -348,7 +347,7 @@ and you should use the last one, which is the maximal size.
 .. _cfg=network/bandwidth-factor:
 .. _cfg=network/latency-factor:
 .. _cfg=network/weight-S:
-   
+
 Correcting Important Network Parameters
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -469,11 +468,11 @@ Here is the full list of plugins that can be activated this way:
    computations. More details in @ref plugin_energy.
  - **link_energy:** keeps track of the energy dissipated by
    communications. More details in @ref SURF_plugin_energy.
- - **host_load:** keeps track of the computational load. 
+ - **host_load:** keeps track of the computational load.
    More details in @ref plugin_load.
 
 .. _options_modelchecking:
-   
+
 Configuring the Model-Checking
 ------------------------------
 
@@ -481,14 +480,14 @@ To enable the SimGrid model-checking support the program should
 be executed using the simgrid-mc wrapper:
 
 .. code-block:: shell
-               
+
    simgrid-mc ./my_program
 
 Safety properties are expressed as assertions using the function
 :cpp:func:`void MC_assert(int prop)`.
 
 .. _cfg=model-check/property:
-     
+
 Specifying a liveness property
 ..............................
 
@@ -500,11 +499,11 @@ property, as formatted by the ltl2ba program.
 
 
 .. code-block:: shell
-               
+
    simgrid-mc ./my_program --cfg=model-check/property:<filename>
 
 .. _cfg=model-check/checkpoint:
-   
+
 Going for Stateful Verification
 ...............................
 
@@ -681,30 +680,22 @@ Currently most of the state is not included in the hash because the
 implementation was found to be buggy and this options is not as useful as
 it could be. For this reason, it is currently disabled by default.
 
-.. _cfg=model-check/record:
 .. _cfg=model-check/replay:
 
-Record/Replay of Verification
-.............................
+Replaying buggy execution paths out of the model-checker
+........................................................
 
-As the model-checker keeps jumping at different places in the execution graph,
-it is difficult to understand what happens when trying to debug an application
-under the model-checker. Event the output of the program is difficult to
-interpret. Moreover, the model-checker does not behave nicely with advanced
-debugging tools such as valgrind. For those reason, to identify a trajectory
-in the execution graph with the model-checker and replay this trajcetory and
-without the model-checker black-magic but with more standard tools
-(such as a debugger, valgrind, etc.). For this reason, Simgrid implements an
-experimental record/replay functionnality in order to record a trajectory with
-the model-checker and replay it without the model-checker.
+Debugging the problems reported by the model-checker is challenging: First, the
+application under verification cannot be debugged with gdb because the
+model-checker already traces it. Then, the model-checker may explore several
+execution paths before encountering the issue, making it very difficult to
+understand the outputs. Fortunately, SimGrid provides the execution path leading
+to any reported issue so that you can replay this path out of the model checker,
+enabling the usage of classical debugging tools.
 
 When the model-checker finds an interesting path in the application
 execution graph (where a safety or liveness property is violated), it
-can generate an identifier for this path. To enable this behavious the
-``model-check/record`` must be set to **yes**, which is not the case
-by default.
-
-Here is an example of output:
+generates an identifier for this path. Here is an example of output:
 
 .. code-block:: shell
 
@@ -713,21 +704,18 @@ Here is an example of output:
    [  0.000000] (0:@) *** PROPERTY NOT VALID ***
    [  0.000000] (0:@) **************************
    [  0.000000] (0:@) Counter-example execution trace:
+   [  0.000000] (0:@)   [(1)Tremblay (app)] MC_RANDOM(3)
+   [  0.000000] (0:@)   [(1)Tremblay (app)] MC_RANDOM(4)
    [  0.000000] (0:@) Path = 1/3;1/4
-   [  0.000000] (0:@) [(1)Tremblay (app)] MC_RANDOM(3)
-   [  0.000000] (0:@) [(1)Tremblay (app)] MC_RANDOM(4)
    [  0.000000] (0:@) Expanded states = 27
    [  0.000000] (0:@) Visited states = 68
    [  0.000000] (0:@) Executed transitions = 46
 
-This path can then be replayed outside of the model-checker (and even
-in non-MC build of simgrid) by setting the ``model-check/replay`` item
-to the given path. The other options should be the same (but the
-model-checker should be disabled).
-
-The format and meaning of the path may change between different
-releases so the same release of Simgrid should be used for the record
-phase and the replay phase.
+The interesting line is ``Path = 1/3;1/4``, which means that you should use
+`--cfg=model-check/replay:1/3;1/4`` to replay your application on the buggy
+execution path. The other options should be the same (but the model-checker
+should be disabled). Note that format and meaning of the path may change between
+different releases.
 
 Configuring the User Code Virtualization
 ----------------------------------------
@@ -768,7 +756,7 @@ the slowest to the most efficient:
    raw implementation.
    |br| Install the relevant library (e.g. with the
    libboost-contexts-dev package on Debian/Ubuntu) and recompile
-   SimGrid. 
+   SimGrid.
  - **raw:** amazingly fast factory using a context switching mechanism
    of our own, directly implemented in assembly (only available for x86
    and amd64 platforms for now) and without any unneeded system call.
@@ -832,7 +820,7 @@ application.
 .. _cfg=contexts/nthreads:
 .. _cfg=contexts/parallel-threshold:
 .. _cfg=contexts/synchro:
-  
+
 Running User Code in Parallel
 .............................
 
@@ -874,7 +862,6 @@ which value is either:
    your machine for no good reason. You probably prefer the other less
    eager schemas.
 
-   
 Configuring the Tracing
 -----------------------
 
@@ -915,7 +902,7 @@ you never used the tracing API.
 - SMPI simulator and traces for a space/time view:
 
   .. code-block:: shell
-     
+
      smpirun -trace ...
 
   The `-trace` parameter for the smpirun script runs the simulation
@@ -935,7 +922,7 @@ reproduce an experiment. You have two ways to do that:
 - Add the contents of a textual file on top of the trace file as comment:
 
   .. code-block:: shell
-                 
+
      --cfg=tracing/comment-file:my_file_with_additional_information.txt
 
 Please, use these two parameters (for comments) to make reproducible
@@ -1011,12 +998,12 @@ To disable the benchmarking/simulation of computation in the simulated
 application, the variable ``smpi/simulate-computation`` should be set
 to no.  This option just ignores the timings in your simulation; it
 still executes the computations itself. If you want to stop SMPI from
-doing that, you should check the SMPI_SAMPLE macros, documented in 
+doing that, you should check the SMPI_SAMPLE macros, documented in
 Section :ref:`SMPI_adapting_speed`.
 
 +------------------------------------+-------------------------+-----------------------------+
 |  Solution                          | Computations executed?  | Computations simulated?     |
-+====================================+=========================+=============================+   
++====================================+=========================+=============================+
 | --cfg=smpi/simulate-computation:no | Yes                     | Never                       |
 +------------------------------------+-------------------------+-----------------------------+
 | --cfg=smpi/cpu-threshold:42        | Yes, in all cases       | If it lasts over 42 seconds |
@@ -1077,7 +1064,7 @@ http://simgrid.gforge.inria.fr/contrib/smpi-calibration-doc.html
 http://simgrid.gforge.inria.fr/contrib/smpi-saturation-doc.html
 
 .. _cfg=smpi/display-timing:
-       
+
 Reporting Simulation Time
 .........................
 
@@ -1120,7 +1107,7 @@ actual bandwidth (i.e., values between 0 and 1 are valid), latency factors
 increase the latency, i.e., values larger than or equal to 1 are valid here.
 
 .. _cfg=smpi/papi-events:
-       
+
 Trace hardware counters with PAPI
 .................................
 
@@ -1131,7 +1118,7 @@ names of PAPI counters and adds their respective values to the trace
 files (See Section :ref:`tracing_tracing_options`).
 
 .. warning::
-   
+
    This feature currently requires superuser privileges, as registers
    are queried.  Only use this feature with code you trust! Call
    smpirun for instance via ``smpirun -wrapper "sudo "
@@ -1195,7 +1182,7 @@ or full names.  Check with ldd the name of the library you want to
 use.  Example:
 
 .. code-block:: shell
-                 
+
    ldd allpairf90
       ...
       libgfortran.so.3 => /usr/lib/x86_64-linux-gnu/libgfortran.so.3 (0x00007fbb4d91b000)
@@ -1420,14 +1407,14 @@ mem[100..199] are shared while other area remain private.
 Then, it can be deallocated by calling SMPI_SHARED_FREE(mem).
 
 When smpi/shared-malloc:global is used, the memory consumption problem
-is solved, but it may induce too much load on the kernel's pages table. 
+is solved, but it may induce too much load on the kernel's pages table.
 In this case, you should use huge pages so that we create only one
 entry per Mb of malloced data instead of one entry per 4k.
 To activate this, you must mount a hugetlbfs on your system and allocate
 at least one huge page:
 
 .. code-block:: shell
-               
+
     mkdir /home/huge
     sudo mount none /home/huge -t hugetlbfs -o rw,mode=0777
     sudo sh -c 'echo 1 > /proc/sys/vm/nr_hugepages' # echo more if you need more
@@ -1449,7 +1436,7 @@ to 0, the simulated clock is not advanced in these calls, which leads
 to issue if your application contains such a loop:
 
 .. code-block:: cpp
-               
+
    while(MPI_Wtime() < some_time_bound) {
         /* some tests, with no communication nor computation */
    }
@@ -1514,7 +1501,7 @@ with gdb:
    set variable simgrid::simix::breakpoint = 3.1416
 
 .. _cfg=verbose-exit:
-   
+
 Behavior on Ctrl-C
 ..................
 
index bd8e47b..275e773 100644 (file)
@@ -211,8 +211,10 @@ enable_debug (ON/off)
   runtime. However, it obviously becomes impossible to get any debug
   info from SimGrid if something goes wrong.
 
-enable_documentation (ON/off)
-  Generates the documentation pages.
+enable_documentation (on/OFF)
+  Generates the documentation pages. Building the documentation is not
+  as easy as it used to be, and you should probably use the online
+  version for now.
 
 enable_java (on/OFF)
   Generates the java bindings of SimGrid.
index bff4f27..7861435 100644 (file)
@@ -320,9 +320,9 @@ All needed dependencies are already installed in this container
 optional in this tutorial, it is not installed to reduce the image
 size.
 
-The code template is available under ``/source/simgrid-template-s4u.git`` 
+The code template is available under ``/source/simgrid-template-s4u.git``
 in the image. You should copy it to your working directory and
-recompile it when you first log in: 
+recompile it when you first log in:
 
 .. code-block:: shell
 
@@ -345,8 +345,8 @@ Debian and Ubuntu for example, you can get them as follows:
 
    sudo apt install simgrid pajeng cmake g++ vite
 
-For R analysis of the produced traces, you may want to install R, 
-and the `pajengr<https://github.com/schnorr/pajengr#installation/>`_ package.
+For R analysis of the produced traces, you may want to install R,
+and the `pajengr <https://github.com/schnorr/pajengr#installation/>`_ package.
 
 .. code-block:: shell
 
@@ -363,10 +363,10 @@ everything as follows:
 
    # (exporting SimGrid_PATH is only needed if SimGrid is installed in a non-standard path)
    export SimGrid_PATH=/where/to/simgrid
-   
+
    git clone https://framagit.org/simgrid/simgrid-template-s4u.git
    cd simgrid-template-s4u/
-   cmake . 
+   cmake .
    make
 
 If you struggle with the compilation, then you should double check
index 673d4ea..a1b93b5 100644 (file)
@@ -89,7 +89,7 @@ interconnected as follows:
 
 This can be done with the following platform file, that considers the
 simulated platform as a graph of hosts and network links.
-          
+
 .. literalinclude:: /tuto_smpi/3hosts.xml
    :language: xml
 
@@ -308,8 +308,8 @@ Debian and Ubuntu for example, you can get them as follows:
 
    sudo apt install simgrid pajeng make gcc g++ gfortran vite
 
-For R analysis of the produced traces, you may want to install R, 
-and the `pajengr<https://github.com/schnorr/pajengr#installation/>`_ package.
+For R analysis of the produced traces, you may want to install R,
+and the `pajengr <https://github.com/schnorr/pajengr#installation/>`_ package.
 
 .. code-block:: shell
 
@@ -486,7 +486,7 @@ is computationally hungry.
     the documentation is up-to-date.
 
 Lab 3: Execution Sampling on Matrix Multiplication example
--------------------------------
+----------------------------------------------------------
 
 The second method to speed up simulations is to sample the computation
 parts in the code.  This means that the person doing the simulation
@@ -505,13 +505,12 @@ The computing part of this example is the matrix multiplication routine
 .. literalinclude:: /tuto_smpi/gemm_mpi.cpp
    :language: c
    :lines: 4-19
-   
 
 .. code-block:: shell
 
   $ smpicc -O3 gemm_mpi.cpp -o gemm
   $ time smpirun -np 16 -platform cluster_crossbar.xml -hostfile cluster_hostfile --cfg=smpi/display-timing:yes --cfg=smpi/running-power:1000000000 ./gemm
-  
+
 This should end quite quickly, as the size of each matrix is only 1000x1000. 
 But what happens if we want to simulate larger runs ?
 Replace the size by 2000, 3000, and try again.
@@ -585,7 +584,7 @@ so these macros cannot be used when results are critical for the application beh
 
 
 Lab 4: Memory folding on large allocations
--------------------------------
+------------------------------------------
 
 Another issue that can be encountered when simulation with SMPI is lack of memory.
 Indeed we are executing all MPI processes on a single node, which can lead to crashes.
index 8a2f5a0..bdd3411 100644 (file)
@@ -50,7 +50,7 @@ Using SMPI online
 In this mode, your application is actually executed. Every computation
 occurs for real while every communication is simulated. In addition,
 the executions are automatically benchmarked so that their timings can
-be applied within the simulator. 
+be applied within the simulator.
 
 SMPI can also go offline by replaying a trace. :ref:`Trace replay
 <SMPI_offline>` is usually ways faster than online simulation (because
@@ -113,7 +113,7 @@ usual.
 
 .. _SMPI_use_colls:
 
-................................   
+................................
 Simulating Collective Operations
 ................................
 
@@ -140,15 +140,15 @@ You can switch the automatic selector through the
  - **ompi:** default selection logic of OpenMPI (version 3.1.2)
  - **mpich**: default selection logic of MPICH (version 3.3b)
  - **mvapich2**: selection logic of MVAPICH2 (version 1.9) tuned
-   on the Stampede cluster   
+   on the Stampede cluster
  - **impi**: preliminary version of an Intel MPI selector (version
    4.1.3, also tuned for the Stampede cluster). Due the closed source
    nature of Intel MPI, some of the algorithms described in the
-   documentation are not available, and are replaced by mvapich ones.   
+   documentation are not available, and are replaced by mvapich ones.
  - **default**: legacy algorithms used in the earlier days of
    SimGrid. Do not use for serious perform performance studies.
 
-.. todo:: default should not even exist.   
+.. todo:: default should not even exist.
 
 ....................
 Available Algorithms
@@ -169,19 +169,19 @@ means that the selected algorithm will be used
 MPI_Alltoall
 ^^^^^^^^^^^^
 
-Most of these are best described in `STAR-MPI <http://www.cs.arizona.edu/~dkl/research/papers/ics06.pdf>`_.
+Most of these are best described in `STAR-MPI's white paper <www.cs.fsu.edu/~xyuan/paper/06ics.pdf>`_.
 
  - default: naive one, by default
  - ompi: use openmpi selector for the alltoall operations
  - mpich: use mpich selector for the alltoall operations
  - mvapich2: use mvapich2 selector for the alltoall operations
  - impi: use intel mpi selector for the alltoall operations
- - automatic (experimental): use an automatic self-benchmarking algorithm 
+ - automatic (experimental): use an automatic self-benchmarking algorithm
  - bruck: Described by Bruck et.al. in <a href="http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=642949">this paper</a>
- - 2dmesh: organizes the nodes as a two dimensional mesh, and perform allgather 
+ - 2dmesh: organizes the nodes as a two dimensional mesh, and perform allgather
    along the dimensions
  - 3dmesh: adds a third dimension to the previous algorithm
- - rdb: recursive doubling: extends the mesh to a nth dimension, each one 
+ - rdb: recursive doubling: extends the mesh to a nth dimension, each one
    containing two nodes
  - pair: pairwise exchange, only works for power of 2 procs, size-1 steps,
    each process sends and receives from the same process at each step
@@ -204,7 +204,7 @@ MPI_Alltoallv
  - mpich: use mpich selector for the alltoallv operations
  - mvapich2: use mvapich2 selector for the alltoallv operations
  - impi: use intel mpi selector for the alltoallv operations
- - automatic (experimental): use an automatic self-benchmarking algorithm 
+ - automatic (experimental): use an automatic self-benchmarking algorithm
  - bruck: same as alltoall
  - pair: same as alltoall
  - pair_light_barrier: same as alltoall
@@ -239,7 +239,7 @@ MPI_Barrier
  - mpich: use mpich selector for the barrier operations
  - mvapich2: use mvapich2 selector for the barrier operations
  - impi: use intel mpi selector for the barrier operations
- - automatic (experimental): use an automatic self-benchmarking algorithm 
+ - automatic (experimental): use an automatic self-benchmarking algorithm
  - ompi_basic_linear: all processes send to root
  - ompi_two_procs: special case for two processes
  - ompi_bruck: nsteps = sqrt(size), at each step, exchange data with rank-2^k and rank+2^k
@@ -257,8 +257,8 @@ MPI_Scatter
  - mpich: use mpich selector for the scatter operations
  - mvapich2: use mvapich2 selector for the scatter operations
  - impi: use intel mpi selector for the scatter operations
- - automatic (experimental): use an automatic self-benchmarking algorithm 
- - ompi_basic_linear: basic linear scatter 
+ - automatic (experimental): use an automatic self-benchmarking algorithm
+ - ompi_basic_linear: basic linear scatter
  - ompi_binomial: binomial tree scatter
  - mvapich2_two_level_direct: SMP aware algorithm, with an intra-node stage (default set to mpich selector), and then a basic linear inter node stage. Use mvapich2 selector to change these to tuned algorithms for Stampede cluster. 
  - mvapich2_two_level_binomial: SMP aware algorithm, with an intra-node stage (default set to mpich selector), and then a binomial phase. Use mvapich2 selector to change these to tuned algorithms for Stampede cluster.
@@ -271,28 +271,28 @@ MPI_Reduce
  - mpich: use mpich selector for the reduce operations
  - mvapich2: use mvapich2 selector for the reduce operations
  - impi: use intel mpi selector for the reduce operations
- - automatic (experimental): use an automatic self-benchmarking algorithm 
+ - automatic (experimental): use an automatic self-benchmarking algorithm
  - arrival_pattern_aware: root exchanges with the first process to arrive
  - binomial: uses a binomial tree
  - flat_tree: uses a flat tree
- - NTSL: Non-topology-specific pipelined linear-bcast function 
+ - NTSL: Non-topology-specific pipelined linear-bcast function
    0->1, 1->2 ,2->3, ....., ->last node: in a pipeline fashion, with segments
    of 8192 bytes
  - scatter_gather: scatter then gather
  - ompi_chain: openmpi reduce algorithms are built on the same basis, but the
    topology is generated differently for each flavor
-   chain = chain with spacing of size/2, and segment size of 64KB 
- - ompi_pipeline: same with pipeline (chain with spacing of 1), segment size 
+   chain = chain with spacing of size/2, and segment size of 64KB
+ - ompi_pipeline: same with pipeline (chain with spacing of 1), segment size
    depends on the communicator size and the message size
  - ompi_binary: same with binary tree, segment size of 32KB
- - ompi_in_order_binary: same with binary tree, enforcing order on the 
+ - ompi_in_order_binary: same with binary tree, enforcing order on the
    operations
- - ompi_binomial: same with binomial algo (redundant with default binomial 
+ - ompi_binomial: same with binomial algo (redundant with default binomial
    one in most cases)
  - ompi_basic_linear: basic algorithm, each process sends to root
  - mvapich2_knomial: k-nomial algorithm. Default factor is 4 (mvapich2 selector adapts it through tuning)
  - mvapich2_two_level: SMP-aware reduce, with default set to mpich both for intra and inter communicators. Use mvapich2 selector to change these to tuned algorithms for Stampede cluster.
- - rab: `Rabenseifner <https://fs.hlrs.de/projects/par/mpi//myreduce.html>`_'s reduce algorithm 
+ - rab: `Rabenseifner <https://fs.hlrs.de/projects/par/mpi//myreduce.html>`_'s reduce algorithm
 
 MPI_Allreduce
 ^^^^^^^^^^^^^
@@ -302,21 +302,21 @@ MPI_Allreduce
  - mpich: use mpich selector for the allreduce operations
  - mvapich2: use mvapich2 selector for the allreduce operations
  - impi: use intel mpi selector for the allreduce operations
- - automatic (experimental): use an automatic self-benchmarking algorithm 
+ - automatic (experimental): use an automatic self-benchmarking algorithm
  - lr: logical ring reduce-scatter then logical ring allgather
  - rab1: variations of the  <a href="https://fs.hlrs.de/projects/par/mpi//myreduce.html">Rabenseifner</a> algorithm: reduce_scatter then allgather
  - rab2: variations of the  <a href="https://fs.hlrs.de/projects/par/mpi//myreduce.html">Rabenseifner</a> algorithm: alltoall then allgather
- - rab_rsag: variation of the  <a href="https://fs.hlrs.de/projects/par/mpi//myreduce.html">Rabenseifner</a> algorithm: recursive doubling 
-   reduce_scatter then recursive doubling allgather 
+ - rab_rsag: variation of the  <a href="https://fs.hlrs.de/projects/par/mpi//myreduce.html">Rabenseifner</a> algorithm: recursive doubling
+   reduce_scatter then recursive doubling allgather
  - rdb: recursive doubling
- - smp_binomial: binomial tree with smp: binomial intra 
+ - smp_binomial: binomial tree with smp: binomial intra
    SMP reduce, inter reduce, inter broadcast then intra broadcast
  - smp_binomial_pipeline: same with segment size = 4096 bytes
- - smp_rdb: intra: binomial allreduce, inter: Recursive 
+ - smp_rdb: intra: binomial allreduce, inter: Recursive
    doubling allreduce, intra: binomial broadcast
- - smp_rsag: intra: binomial allreduce, inter: reduce-scatter, 
+ - smp_rsag: intra: binomial allreduce, inter: reduce-scatter,
    inter:allgather, intra: binomial broadcast
- - smp_rsag_lr: intra: binomial allreduce, inter: logical ring 
+ - smp_rsag_lr: intra: binomial allreduce, inter: logical ring
    reduce-scatter, logical ring inter:allgather, intra: binomial broadcast
  - smp_rsag_rab: intra: binomial allreduce, inter: rab
    reduce-scatter, rab inter:allgather, intra: binomial broadcast
@@ -334,7 +334,7 @@ MPI_Reduce_scatter
  - mpich: use mpich selector for the reduce_scatter operations
  - mvapich2: use mvapich2 selector for the reduce_scatter operations
  - impi: use intel mpi selector for the reduce_scatter operations
- - automatic (experimental): use an automatic self-benchmarking algorithm 
+ - automatic (experimental): use an automatic self-benchmarking algorithm
  - ompi_basic_recursivehalving: recursive halving version from OpenMPI
  - ompi_ring: ring version from OpenMPI
  - mpich_pair: pairwise exchange version from MPICH
@@ -350,13 +350,13 @@ MPI_Allgather
  - mpich: use mpich selector for the allgather operations
  - mvapich2: use mvapich2 selector for the allgather operations
  - impi: use intel mpi selector for the allgather operations
- - automatic (experimental): use an automatic self-benchmarking algorithm 
+ - automatic (experimental): use an automatic self-benchmarking algorithm
  - 2dmesh: see alltoall
  - 3dmesh: see alltoall
  - bruck: Described by Bruck et.al. in <a href="http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=642949">
-   Efficient algorithms for all-to-all communications in multiport message-passing systems</a> 
+   Efficient algorithms for all-to-all communications in multiport message-passing systems</a>
  - GB: Gather - Broadcast (uses tuned version if specified)
- - loosely_lr: Logical Ring with grouping by core (hardcoded, default 
+ - loosely_lr: Logical Ring with grouping by core (hardcoded, default
    processes/node: 4)
  - NTSLR: Non Topology Specific Logical Ring
  - NTSLR_NB: Non Topology Specific Logical Ring, Non Blocking operations
@@ -364,15 +364,15 @@ MPI_Allgather
  - rdb: see alltoall
  - rhv: only power of 2 number of processes
  - ring: see alltoall
- - SMP_NTS: gather to root of each SMP, then every root of each SMP node 
-   post INTER-SMP Sendrecv, then do INTRA-SMP Bcast for each receiving message, 
+ - SMP_NTS: gather to root of each SMP, then every root of each SMP node
+   post INTER-SMP Sendrecv, then do INTRA-SMP Bcast for each receiving message,
    using logical ring algorithm (hardcoded, default processes/SMP: 8)
- - smp_simple: gather to root of each SMP, then every root of each SMP node 
-   post INTER-SMP Sendrecv, then do INTRA-SMP Bcast for each receiving message, 
+ - smp_simple: gather to root of each SMP, then every root of each SMP node
+   post INTER-SMP Sendrecv, then do INTRA-SMP Bcast for each receiving message,
    using simple algorithm (hardcoded, default processes/SMP: 8)
  - spreading_simple: from node i, order of communications is i -> i + 1, i ->
    i + 2, ..., i -> (i + p -1) % P
- - ompi_neighborexchange: Neighbor Exchange algorithm for allgather. 
+ - ompi_neighborexchange: Neighbor Exchange algorithm for allgather.
    Described by Chen et.al. in  `Performance Evaluation of Allgather
    Algorithms on Terascale Linux Cluster with Fast Ethernet <http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=1592302>`_
  - mvapich2_smp: SMP aware algorithm, performing intra-node gather, inter-node allgather with one process/node, and bcast intra-node
@@ -385,7 +385,7 @@ MPI_Allgatherv
  - mpich: use mpich selector for the allgatherv operations
  - mvapich2: use mvapich2 selector for the allgatherv operations
  - impi: use intel mpi selector for the allgatherv operations
- - automatic (experimental): use an automatic self-benchmarking algorithm 
+ - automatic (experimental): use an automatic self-benchmarking algorithm
  - GB: Gatherv - Broadcast (uses tuned version if specified, but only for Bcast, gatherv is not tuned)
  - pair: see alltoall
  - ring: see alltoall
@@ -402,7 +402,7 @@ MPI_Bcast
  - mpich: use mpich selector for the bcast operations
  - mvapich2: use mvapich2 selector for the bcast operations
  - impi: use intel mpi selector for the bcast operations
- - automatic (experimental): use an automatic self-benchmarking algorithm 
+ - automatic (experimental): use an automatic self-benchmarking algorithm
  - arrival_pattern_aware: root exchanges with the first process to arrive
  - arrival_pattern_aware_wait: same with slight variation
  - binomial_tree: binomial tree exchange
@@ -419,7 +419,7 @@ MPI_Bcast
  - SMP_linear: linear algorithm with 8 cores/SMP
  - ompi_split_bintree: binary tree algorithm from OpenMPI, with message split in 8192 bytes pieces
  - ompi_pipeline: pipeline algorithm from OpenMPI, with message split in 128KB pieces
- - mvapich2_inter_node: Inter node default mvapich worker 
+ - mvapich2_inter_node: Inter node default mvapich worker
  - mvapich2_intra_node: Intra node default mvapich worker
  - mvapich2_knomial_intra_node:  k-nomial intra node default mvapich worker. default factor is 4.
 
@@ -428,10 +428,10 @@ Automatic Evaluation
 
 .. warning:: This is still very experimental.
 
-An automatic version is available for each collective (or even as a selector). This specific 
-version will loop over all other implemented algorithm for this particular collective, and apply 
-them while benchmarking the time taken for each process. It will then output the quickest for 
-each process, and the global quickest. This is still unstable, and a few algorithms which need 
+An automatic version is available for each collective (or even as a selector). This specific
+version will loop over all other implemented algorithm for this particular collective, and apply
+them while benchmarking the time taken for each process. It will then output the quickest for
+each process, and the global quickest. This is still unstable, and a few algorithms which need
 specific number of nodes may crash.
 
 Adding an algorithm
@@ -469,17 +469,17 @@ result in overloaded, hard to interpret traces. If you want to debug
 and compare collective algorithms, you should set the
 ``tracing/smpi/internals`` configuration item to 1 instead of 0.
 
-Here are examples of two alltoall collective algorithms runs on 16 nodes, 
+Here are examples of two alltoall collective algorithms runs on 16 nodes,
 the first one with a ring algorithm, the second with a pairwise one.
 
 .. image:: /img/smpi_simgrid_alltoall_ring_16.png
    :align: center
-          
+
 Alltoall on 16 Nodes with the Ring Algorithm.
 
 .. image:: /img/smpi_simgrid_alltoall_pair_16.png
    :align: center
-          
+
 Alltoall on 16 Nodes with the Pairwise Algorithm.
 
 -------------------------
@@ -495,7 +495,7 @@ MPI coverage of SMPI
 ....................
 
 Our coverage of the interface is very decent, but still incomplete;
-Given the size of the MPI standard, we may well never manage to 
+Given the size of the MPI standard, we may well never manage to
 implement absolutely all existing primitives. Currently, we have
 almost no support for I/O primitives, but we still pass a very large
 amount of the MPICH coverage tests.
@@ -532,7 +532,7 @@ privatized the globals through static analysis of the source code. But
 our implementation was not robust enough to be used in production, so
 it was removed at some point. Currently, SMPI comes with two
 privatization mechanisms that you can :ref:`select at runtime
-<options_smpi_privatization>`_.  The dlopen approach is used by
+<cfg=smpi/privatization>`_.  The dlopen approach is used by
 default as it is much faster and still very robust.  The mmap approach
 is an older approach that proves to be slower.
 
@@ -625,7 +625,7 @@ processes write and read to the same place without any kind of coordination,
 then this macro can dramatically shrink your memory consumption. For example,
 that will be very beneficial to a matrix multiplication code, as all blocks will
 be stored on the same area. Of course, the resulting computations will useless,
-but you can still study the application behavior this way. 
+but you can still study the application behavior this way.
 
 Naturally, this won't work if your code is data-dependent. For example, a Jacobi
 iterative computation depends on the result computed by the code to detect
@@ -649,7 +649,7 @@ SMPI_SAMPLE_LOCAL, and shared between all processors with
 SMPI_SAMPLE_GLOBAL. Of course, none of this will work if the execution
 time of your loop iteration are not stable.
 
-This feature is demoed by the example file 
+This feature is demoed by the example file
 `examples/smpi/NAS/ep.c <https://framagit.org/simgrid/simgrid/tree/master/examples/smpi/NAS/ep.c>`_
 
 .............................
@@ -679,7 +679,7 @@ results that you observe between both settings (visualization can be
 precious for that). Then, try to modify your model (of the platform,
 of the collective operations) to reduce the most preeminent differences.
 
-If the discrepancies come from the computing time, try adapting the 
+If the discrepancies come from the computing time, try adapting the
 ``smpi/host-speed``: reduce it if your simulation runs faster than in
 reality. If the error come from the communication, then you need to
 fiddle with your platform file.
@@ -733,7 +733,7 @@ In addition to the previous answers, some projects also need to be
 explicitely told what compiler to use, as follows:
 
 .. code-block:: shell
-               
+
    SMPI_PRETEND_CC=1 ./configure CC=smpicc # here come the other configure parameters
    make
 
@@ -765,7 +765,7 @@ Trace Replay and Offline SMPI
 
 Although SMPI is often used for :ref:`online simulation
 <SMPI_online>`, where the application is executed for real, you can
-also go for offline simulation through trace replay. 
+also go for offline simulation through trace replay.
 
 SimGrid uses time-independent traces, in which each actor is given a
 script of the actions to do sequentially. These trace files can
@@ -773,7 +773,7 @@ actually be captured with the online version of SMPI, as follows:
 
 .. code-block:: shell
 
-   $ smpirun -trace-ti --cfg=tracing/filename:LU.A.32 -np 32 -platform ../cluster_backbone.xml bin/lu.A.32 
+   $ smpirun -trace-ti --cfg=tracing/filename:LU.A.32 -np 32 -platform ../cluster_backbone.xml bin/lu.A.32
 
 The produced trace is composed of a file ``LU.A.32`` and a folder
 ``LU.A.32_files``. The file names don't match with the MPI ranks, but
index fe4dadd..88d5a5f 100644 (file)
@@ -165,9 +165,9 @@ Futures and Promises
 """"""""""""""""""""
 
  - Some features are missing in the Maestro future implementation
-  (`simgrid::kernel::Future`, `simgrid::kernel::Promise`)
-  could be extended to support additional features:
-  `when_any`, `shared_future`, etc.
+   (`simgrid::kernel::Future`, `simgrid::kernel::Promise`)
+   could be extended to support additional features:
+   `when_any`, `shared_future`, etc.
 
  - The corresponding feature might then be implemented in the user process
    futures (`simgrid::simix::Future`).
index 1c4eaca..5f1fe9a 100644 (file)
@@ -13,7 +13,7 @@
    <br/>
 
 .. _howto:
-   
+
 Modeling Hints
 ##############
 
@@ -61,7 +61,7 @@ freely available, though.
 .. _howto_churn:
 
 Modeling Churn (e.g., in P2P)
-****************************
+*****************************
 
 One of the biggest challenges in P2P settings is to cope with the
 churn, meaning that resources keep appearing and disappearing. In
index 4e729a5..1807823 100644 (file)
    <br/>
 
 .. _platform_reference:
-   
+
 DTD Reference
 *************
 
-Your platform description should follow the specification presented in the 
-`simgrid.dtd <https://simgrid.org/simgrid.dtd>`_ DTD file. The same DTD is used for both platform and deployment files. 
+Your platform description should follow the specification presented in the
+`simgrid.dtd <https://simgrid.org/simgrid.dtd>`_ DTD file. The same DTD is used for both platform and deployment files.
+
+-------------------------------------------------------------------------------
 
 .. _pf_tag_config:
 
-------------------------------------------------------------------
 <config>
-------------------------------------------------------------------
+--------
 
 Adding configuration flags directly into the platform file becomes particularly useful when the realism of the described
 platform depends on some specific flags. For example, this could help you to finely tune SMPI. Almost all
@@ -50,13 +51,12 @@ has to be set to.
      <!-- The rest of your platform -->
    </platform>
 
-|hr|
-   
+-------------------------------------------------------------------------------
+
 .. _pf_tag_host:
 
-------------------------------------------------------------------
 <host>
-------------------------------------------------------------------
+------
 
 A host is the computing resource on which an actor can run. See :cpp:class:`simgrid::s4u::Host`.
 
@@ -82,8 +82,8 @@ A host is the computing resource on which an actor can run. See :cpp:class:`simg
       5 1
       LOOPAFTER 5
 
-   - At time t = 1, half of the host computational power (0.5 means 50%) is used to process some background load, hence 
-     only 50% of this initial power remains available to your own simulation. 
+   - At time t = 1, half of the host computational power (0.5 means 50%) is used to process some background load, hence
+     only 50% of this initial power remains available to your own simulation.
    - At time t = 2, the available power drops at 20% of the initial value.
    - At time t = 5, the host can compute at full speed again.
    - At time t = 10, the profile is reset (as we are 5 seconds after the last event). Then the available speed will drop
@@ -115,13 +115,12 @@ A host is the computing resource on which an actor can run. See :cpp:class:`simg
 :``pstate``: Initial pstate (default: 0, the first one).
    See :ref:`howto_dvfs`.
 
-|hr|
-   
+-------------------------------------------------------------------------------
+
 .. _pf_tag_link:
 
-------------------------------------------------------------------
 <link>
-------------------------------------------------------------------
+------
 
 SimGrid links usually represent one-hop network connections (see :cpp:class:`simgrid::s4u::Link`), i.e., a single wire. 
 They can also be used to abstract a larger network interconnect, e.g., the entire transcontinental network, into a 
@@ -178,7 +177,7 @@ single element.
    names are suffixed with "_UP" and "_DOWN"). Then you must specify
    which direction gets actually used when referring to that link in a
    :ref:`pf_tag_link_ctn`.
-       
+
 :``bandwidth_file``: File containing the bandwidth profile.
    Almost every lines of such files describe timed events as ``date
    bandwidth`` (in bytes per second).
@@ -201,9 +200,9 @@ single element.
    Almost every lines of such files describe timed events as ``date
    latency`` (in seconds).
    Example:
-                  
+
    .. code-block:: python
-                  
+
       1.0 0.001
       3.0 0.1
       LOOPAFTER 5.0
@@ -220,17 +219,16 @@ single element.
 
 :``state_file``: File containing the state profile. See :ref:`pf_tag_host`.
 
-|hr|
-           
+-------------------------------------------------------------------------------
+
 .. _pf_tag_link_ctn:
 
-------------------------------------------------------------------
 <link_ctn>
-------------------------------------------------------------------
+----------
 
 An element in a route, representing a previously defined link.
 
-**Parent tags:** :ref:`pf_tag_route` |br| 
+**Parent tags:** :ref:`pf_tag_route` |br|
 **Children tags:** none |br|
 **Attributes:**
 
@@ -239,13 +237,12 @@ An element in a route, representing a previously defined link.
                (with ``DOWN``) of the link. This is only valid if the
                link has ``sharing=SPLITDUPLEX``.
 
-|hr|
+-------------------------------------------------------------------------------
 
 .. _pf_tag_peer:
 
-------------------------------------------------------------------
 <peer>
-------------------------------------------------------------------
+------
 
 This tag represents a peer, as in Peer-to-Peer (P2P) networks. It is
 handy to model situations where hosts have an asymmetric
@@ -269,7 +266,7 @@ and a download link.
 :``coordinates``: Coordinates of the gateway for this peer.
 
    The communication latency between a host A = (xA,yA,zA) and a host B = (xB,yB,zB) is computed as follows:
+
    latency = sqrt( (xA-xB)² + (yA-yB)² ) + zA + zB
 
    See the documentation of
@@ -281,19 +278,18 @@ and a download link.
 :``state_file``: File containing the state profile.
    See the full description in :ref:`pf_tag_host`
 
-|hr|
+-------------------------------------------------------------------------------
 
 .. _pf_tag_platform:
 
-------------------------------------------------------------------
 <platform>
-------------------------------------------------------------------
+----------
 
 **Parent tags:** none (this is the root tag of every file) |br|
 **Children tags:** :ref:`pf_tag_config` (must come first),
 :ref:`pf_tag_cluster`, :ref:`pf_tag_cabinet`, :ref:`pf_tag_peer`,
 :ref:`pf_tag_zone`, :ref:`pf_tag_trace`, :ref:`pf_tag_trace_connect` |br|
-**Attributes:** 
+**Attributes:**
 
 :``version``: Version of the DTD, describing the whole XML format.
              This versionning allow future evolutions, even if we
@@ -302,13 +298,12 @@ and a download link.
              upgrade most of the past platform files to the most recent
              formalism.
 
-|hr|
-             
+-------------------------------------------------------------------------------
+
 .. _pf_tag_prop:
 
-------------------------------------------------------------------
 <prop>
-------------------------------------------------------------------
+------
 
 This tag can be used to attach user-defined properties to some
 platform elements. Both the name and the value can be any string of
@@ -333,17 +328,16 @@ following functions:
 :``id``: Name of the defined property.
 :``value``: Value of the defined property.
 
-|hr|
-           
+-------------------------------------------------------------------------------
+
 .. _pf_tag_route:
 
-------------------------------------------------------------------
 <route>
-------------------------------------------------------------------
+-------
 
-A path between two network locations, composed of several :ref:`pf_tag_link`s. 
+A path between two network locations, composed of several :ref:`pf_tag_link`s.
 
-**Parent tags:** :ref:`pf_tag_zone` |br| 
+**Parent tags:** :ref:`pf_tag_zone` |br|
 **Children tags:** :ref:`pf_tag_link_ctn` |br|
 **Attributes:**
 
@@ -353,11 +347,10 @@ A path between two network locations, composed of several :ref:`pf_tag_link`s.
                  are defining the route ``dst -> src`` at the same
                  time. Valid values: ``yes``, ``no``,``YES``, ``NO``.
 
-|hr|
+-------------------------------------------------------------------------------
 
 .. _pf_tag_router:
 
-------------------------------------------------------------------
 <router>
 ------------------------------------------------------------------
 
@@ -372,34 +365,29 @@ break the routes that are longer than 1 hop.
 
 :``id``: Router name.
    No other host or router may have the same name over the whole platform.
-:``coordinates``: Vivaldi coordinates. See :ref:`pf_tag_peer`.     
+:``coordinates``: Vivaldi coordinates. See :ref:`pf_tag_peer`.
 
-|hr|
+-------------------------------------------------------------------------------
 
 .. _pf_tag_zone:
 
-------------------------------------------------------------------
 <zone>
-------------------------------------------------------------------
+------
 
 A networking zone is an area in which elements are located. See :cpp:class:`simgrid::s4u::Zone`.
 
 **Parent tags:** :ref:`pf_tag_platform`, :ref:`pf_tag_zone` (only internal nodes, i.e., zones
 containing only inner zones or clusters but no basic
-elements such as host or peer) |br| 
+elements such as host or peer) |br|
 **Children tags (if internal zone):** :ref:`pf_tag_cluster`, :ref:`pf_tag_link`, :ref:`pf_tag_zone` |br|
 **Children tags (if leaf zone):** :ref:`pf_tag_host`, :ref:`pf_tag_link`, :ref:`pf_tag_peer` |br|
 **Attributes:**
 
 :``id``: Zone name.
    No other zone may have the same name over the whole platform.
-:``routing``: Routing algorithm to use. 
+:``routing``: Routing algorithm to use.
 
 
 .. |br| raw:: html
 
    <br />
-
-.. |hr| raw:: html
-
-   <hr />
index 622ea9f..8042975 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing a simple master/worker example application
 
-$ $SG_TEST_EXENV ./app-masterworker/app-masterworker ${platfdir}/multicore_machine.xml ${srcdir}/app-masterworker-multicore_d.xml --cfg=cpu/model:Cas01 --cfg=cpu/optim:Full "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ./app-masterworker/app-masterworker ${platfdir}/multicore_machine.xml ${srcdir}/app-masterworker-multicore_d.xml --cfg=cpu/model:Cas01 --cfg=cpu/optim:Full "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'cpu/model' to 'Cas01'
 > [  0.000000] (0:maestro@) Configuration change: Set 'cpu/optim' to 'Full'
 > [  0.000000] (1:master@Tremblay) Got 6 workers and 20 tasks to process
index 16ac3e1..44ae31f 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing a simple master/worker example application
 
-$ $SG_TEST_EXENV ${bindir}/app-masterworker  ${platfdir}/vivaldi.xml ${srcdir}/app-masterworker-vivaldi_d.xml --cfg=network/latency-factor:1.0 --cfg=network/bandwidth-factor:1.0 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir}/app-masterworker  ${platfdir}/vivaldi.xml ${srcdir}/app-masterworker-vivaldi_d.xml --cfg=network/latency-factor:1.0 --cfg=network/bandwidth-factor:1.0 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/latency-factor' to '1.0'
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/bandwidth-factor' to '1.0'
 > [  0.000000] (1:master@100030591) Got 15 workers and 10 tasks to process
index 91e3d7a..f5343be 100644 (file)
@@ -3,7 +3,7 @@
 p Testing a simple master/worker example application (mailbox version)
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/app-masterworker$EXEEXT ${platfdir}/small_platform_with_routers.xml ${srcdir}/app-masterworker_d.xml --cfg=network/crosstraffic:0 --trace "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/app-masterworker ${platfdir}/small_platform_with_routers.xml ${srcdir}/app-masterworker_d.xml --cfg=network/crosstraffic:0 --trace "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/crosstraffic' to '0'
 > [  0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
 > [  0.000000] (1:master@Tremblay) Sending "Task_0" (of 20) to mailbox "worker-0"
@@ -34,7 +34,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/app-masterworker$EXEEXT ${platfdir}/small_platform
 > [  5.094868] (0:maestro@) Simulation time 5.09487
 > [  5.094868] (6:worker@Bourassa) I'm done. See you!
 
-$ $SG_TEST_EXENV ${bindir:=.}/app-masterworker$EXEEXT ${platfdir}/small_platform_with_routers.xml ${srcdir}/app-masterworker_d.xml --trace "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/app-masterworker ${platfdir}/small_platform_with_routers.xml ${srcdir}/app-masterworker_d.xml --trace "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
 > [  0.000000] (1:master@Tremblay) Sending "Task_0" (of 20) to mailbox "worker-0"
 > [  0.002265] (1:master@Tremblay) Sending "Task_1" (of 20) to mailbox "worker-1"
index 24813d1..f4abd36 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing the Cloud API with a simple master/workers
 
-$ $SG_TEST_EXENV ${bindir:=.}/cloud-masterworker$EXEEXT --log=no_loc ${platfdir}/cluster_backbone.xml
+$ ${bindir:=.}/cloud-masterworker --log=no_loc ${platfdir}/cluster_backbone.xml
 > [node-0.simgrid.org:master:(1) 0.000000] [msg_test/INFO] # Launch 2 VMs
 > [node-0.simgrid.org:master:(1) 0.000000] [msg_test/INFO] create VM00 on PM(node-1.simgrid.org)
 > [node-0.simgrid.org:master:(1) 0.000000] [msg_test/INFO] put a process (WRK00) on VM00
index 577c299..7825b34 100644 (file)
@@ -3,7 +3,7 @@
 p Testing the Kademlia implementation with MSG
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/dht-kademlia ${platfdir}/cluster_backbone.xml ${srcdir}/dht-kademlia_d.xml "--log=root.fmt:[%10.6r]%e(%02i:%P@%h)%e%m%n"
+$ ${bindir:=.}/dht-kademlia ${platfdir}/cluster_backbone.xml ${srcdir}/dht-kademlia_d.xml "--log=root.fmt:[%10.6r]%e(%02i:%P@%h)%e%m%n"
 > [  0.000000] ( 1:node@node-0.simgrid.org) Hi, I'm going to create the network with id 0
 > [  0.000000] ( 2:node@node-1.simgrid.org) Hi, I'm going to join the network with id 1
 > [  0.000000] ( 3:node@node-2.simgrid.org) Hi, I'm going to join the network with id 3
index fc66316..c2aedae 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing the Pastry implementation with MSG
 
-$ $SG_TEST_EXENV ${bindir:=.}/dht-pastry$EXEEXT -nb_bits=6 ${platfdir}/cluster_backbone.xml ${srcdir}/dht-pastry_d.xml --log=msg_pastry.thres:verbose "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/dht-pastry -nb_bits=6 ${platfdir}/cluster_backbone.xml ${srcdir}/dht-pastry_d.xml --log=msg_pastry.thres:verbose "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [ 25.007806] (1:node@node-0.simgrid.org) Task update from 366680 !!!
 > [ 25.007806] (1:node@node-0.simgrid.org) Node:
 > [ 25.007806] (1:node@node-0.simgrid.org)  Id: 42 '0000002a' 
index b8ab020..ba4dbdf 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing the mechanism for computing host energy consumption in case of VMs
 
-$ ${bindir:=.}/energy-vm$EXEEXT ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/energy-vm ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:dvfs@MyHost1) Creating and starting two VMs
 > [  0.000000] (1:dvfs@MyHost1) Create two tasks on Host1: both inside a VM
 > [  0.000000] (1:dvfs@MyHost1) Create two tasks on Host2: one inside a VM, the other directly on the host
index 88d37e7..2aea478 100644 (file)
@@ -21,16 +21,17 @@ $ ${bindir:=.}/../../../../bin/simgrid-mc ${bindir:=.}/bugged1 "--log=root.fmt:[
 > [  0.000000] (0:maestro@) *** PROPERTY NOT VALID ***
 > [  0.000000] (0:maestro@) **************************
 > [  0.000000] (0:maestro@) Counter-example execution trace:
-> [  0.000000] (0:maestro@) [(1)HostA (server)] iRecv(dst=(1)HostA (server), buff=(verbose only), size=(verbose only))
-> [  0.000000] (0:maestro@) [(2)HostB (client)] iSend(src=(2)HostB (client), buff=(verbose only), size=(verbose only))
-> [  0.000000] (0:maestro@) [(1)HostA (server)] Wait(comm=(verbose only) [(2)HostB (client)-> (1)HostA (server)])
-> [  0.000000] (0:maestro@) [(1)HostA (server)] iRecv(dst=(1)HostA (server), buff=(verbose only), size=(verbose only))
-> [  0.000000] (0:maestro@) [(2)HostB (client)] Wait(comm=(verbose only) [(2)HostB (client)-> (1)HostA (server)])
-> [  0.000000] (0:maestro@) [(4)HostD (client)] iSend(src=(4)HostD (client), buff=(verbose only), size=(verbose only))
-> [  0.000000] (0:maestro@) [(1)HostA (server)] Wait(comm=(verbose only) [(4)HostD (client)-> (1)HostA (server)])
-> [  0.000000] (0:maestro@) [(1)HostA (server)] iRecv(dst=(1)HostA (server), buff=(verbose only), size=(verbose only))
-> [  0.000000] (0:maestro@) [(3)HostC (client)] iSend(src=(3)HostC (client), buff=(verbose only), size=(verbose only))
-> [  0.000000] (0:maestro@) [(1)HostA (server)] Wait(comm=(verbose only) [(3)HostC (client)-> (1)HostA (server)])
+> [  0.000000] (0:maestro@)   [(1)HostA (server)] iRecv(dst=(1)HostA (server), buff=(verbose only), size=(verbose only))
+> [  0.000000] (0:maestro@)   [(2)HostB (client)] iSend(src=(2)HostB (client), buff=(verbose only), size=(verbose only))
+> [  0.000000] (0:maestro@)   [(1)HostA (server)] Wait(comm=(verbose only) [(2)HostB (client)-> (1)HostA (server)])
+> [  0.000000] (0:maestro@)   [(1)HostA (server)] iRecv(dst=(1)HostA (server), buff=(verbose only), size=(verbose only))
+> [  0.000000] (0:maestro@)   [(2)HostB (client)] Wait(comm=(verbose only) [(2)HostB (client)-> (1)HostA (server)])
+> [  0.000000] (0:maestro@)   [(4)HostD (client)] iSend(src=(4)HostD (client), buff=(verbose only), size=(verbose only))
+> [  0.000000] (0:maestro@)   [(1)HostA (server)] Wait(comm=(verbose only) [(4)HostD (client)-> (1)HostA (server)])
+> [  0.000000] (0:maestro@)   [(1)HostA (server)] iRecv(dst=(1)HostA (server), buff=(verbose only), size=(verbose only))
+> [  0.000000] (0:maestro@)   [(3)HostC (client)] iSend(src=(3)HostC (client), buff=(verbose only), size=(verbose only))
+> [  0.000000] (0:maestro@)   [(1)HostA (server)] Wait(comm=(verbose only) [(3)HostC (client)-> (1)HostA (server)])
+> [  0.000000] (0:maestro@) Path = 1;2;1;1;2;4;1;1;3;1
 > [  0.000000] (0:maestro@) Expanded states = 22
 > [  0.000000] (0:maestro@) Visited states = 56
 > [  0.000000] (0:maestro@) Executed transitions = 52
index 1633a7f..719ffe2 100644 (file)
@@ -2092,13 +2092,14 @@ $ ${bindir:=.}/../../../../bin/simgrid-mc ${bindir:=.}/bugged2 "--log=root.fmt:[
 > [  0.000000] (0:maestro@) *** PROPERTY NOT VALID ***
 > [  0.000000] (0:maestro@) **************************
 > [  0.000000] (0:maestro@) Counter-example execution trace:
-> [  0.000000] (0:maestro@) [(1)HostA (server)] iRecv(dst=(1)HostA (server), buff=(verbose only), size=(verbose only))
-> [  0.000000] (0:maestro@) [(3)HostC (client)] iSend(src=(3)HostC (client), buff=(verbose only), size=(verbose only))
-> [  0.000000] (0:maestro@) [(1)HostA (server)] Wait(comm=(verbose only) [(3)HostC (client)-> (1)HostA (server)])
-> [  0.000000] (0:maestro@) [(3)HostC (client)] Wait(comm=(verbose only) [(3)HostC (client)-> (1)HostA (server)])
-> [  0.000000] (0:maestro@) [(1)HostA (server)] iRecv(dst=(1)HostA (server), buff=(verbose only), size=(verbose only))
-> [  0.000000] (0:maestro@) [(3)HostC (client)] iSend(src=(3)HostC (client), buff=(verbose only), size=(verbose only))
-> [  0.000000] (0:maestro@) [(1)HostA (server)] Wait(comm=(verbose only) [(3)HostC (client)-> (1)HostA (server)])
+> [  0.000000] (0:maestro@)   [(1)HostA (server)] iRecv(dst=(1)HostA (server), buff=(verbose only), size=(verbose only))
+> [  0.000000] (0:maestro@)   [(3)HostC (client)] iSend(src=(3)HostC (client), buff=(verbose only), size=(verbose only))
+> [  0.000000] (0:maestro@)   [(1)HostA (server)] Wait(comm=(verbose only) [(3)HostC (client)-> (1)HostA (server)])
+> [  0.000000] (0:maestro@)   [(3)HostC (client)] Wait(comm=(verbose only) [(3)HostC (client)-> (1)HostA (server)])
+> [  0.000000] (0:maestro@)   [(1)HostA (server)] iRecv(dst=(1)HostA (server), buff=(verbose only), size=(verbose only))
+> [  0.000000] (0:maestro@)   [(3)HostC (client)] iSend(src=(3)HostC (client), buff=(verbose only), size=(verbose only))
+> [  0.000000] (0:maestro@)   [(1)HostA (server)] Wait(comm=(verbose only) [(3)HostC (client)-> (1)HostA (server)])
+> [  0.000000] (0:maestro@) Path = 1;3;1;3;1;3;1
 > [  0.000000] (0:maestro@) Expanded states = 1006
 > [  0.000000] (0:maestro@) Visited states = 5319
 > [  0.000000] (0:maestro@) Executed transitions = 4969
\ No newline at end of file
index 229a929..3a88921 100644 (file)
@@ -11,6 +11,12 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test, "Messages specific for this msg example")
 
 #define FINALIZE ((void*)221297)        /* a magic number to tell people to stop working */
 
+static void task_cleanup_handler(void* task)
+{
+  if (task)
+    MSG_task_destroy(task);
+}
+
 static int master(int argc, char *argv[])
 {
   long number_of_tasks = xbt_str_parse_int(argv[1], "Invalid amount of tasks: %s");
@@ -95,7 +101,9 @@ static int worker(int argc, char *argv[])
         break;
       }
       XBT_INFO("Start execution...");
+      MSG_process_set_data(MSG_process_self(), task);
       retcode = MSG_task_execute(task);
+      MSG_process_set_data(MSG_process_self(), NULL);
       if (retcode == MSG_OK) {
         XBT_INFO("Execution complete.");
         MSG_task_destroy(task);
@@ -123,6 +131,7 @@ int main(int argc, char *argv[])
 
   MSG_function_register("master", master);
   MSG_function_register("worker", worker);
+  MSG_process_set_data_cleanup(task_cleanup_handler);
   MSG_launch_application(argv[2]);
 
   msg_error_t res = MSG_main();
index b903537..2eacc0f 100644 (file)
@@ -3,7 +3,7 @@
 p Testing a simple master/worker example application handling failures TCP crosstraffic DISABLED
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/platform-failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_failures.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml --cfg=path:${srcdir} --cfg=network/crosstraffic:0 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --log=surf_cpu.t:verbose
+$ ${bindir:=.}/platform-failures --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_failures.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml --cfg=path:${srcdir} --cfg=network/crosstraffic:0 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --log=surf_cpu.t:verbose
 > [  0.000000] (0:maestro@) Cannot launch actor 'worker' on failed host 'Fafard'
 > [  0.000000] (0:maestro@) Deployment includes some initially turned off Hosts ... nevermind.
 > [  0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
@@ -108,7 +108,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/platform-failures$EXEEXT --log=xbt_cfg.thres:criti
 p Testing a simple master/worker example application handling failures. TCP crosstraffic ENABLED
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/platform-failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_failures.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml --cfg=path:${srcdir} "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --log=surf_cpu.t:verbose
+$ ${bindir:=.}/platform-failures --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_failures.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml --cfg=path:${srcdir} "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --log=surf_cpu.t:verbose
 > [  0.000000] (0:maestro@) Cannot launch actor 'worker' on failed host 'Fafard'
 > [  0.000000] (0:maestro@) Deployment includes some initially turned off Hosts ... nevermind.
 > [  0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
@@ -217,4 +217,4 @@ p   complex with such an integration test. One day, we will setup a set of
 p   unit tests for the surf solver, and such issues will be addressable again.
 p For the time being, I just give up, sorry.
 
-p $ $SG_TEST_EXENV ${bindir:=.}/platform-failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_failures.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml --cfg=path:${srcdir} --cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --log=surf_cpu.t:verbose
+p $ ${bindir:=.}/platform-failures --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_failures.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml --cfg=path:${srcdir} --cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --log=surf_cpu.t:verbose
index 01f5c97..fbcf897 100644 (file)
@@ -1,4 +1,4 @@
 #!/usr/bin/env tesh
 
 p Start remote processes 
-$ $SG_TEST_EXENV ${bindir:=.}/process-create$EXEEXT ${platfdir}/small_platform.xml
+$ ${bindir:=.}/process-create ${platfdir}/small_platform.xml
index 5a55609..75a9068 100644 (file)
@@ -3,7 +3,7 @@
 p Testing synchronization with semaphores
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/synchro-semaphore ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/synchro-semaphore ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:Alice@Fafard) Trying to acquire 1
 > [  0.000000] (1:Alice@Fafard) Acquired 1
 > [  0.900000] (2:Bob@Fafard) Trying to acquire 1
index 418f449..b0687c9 100644 (file)
@@ -2,7 +2,7 @@
 
 p Tracing multiple categories master/worker application
 
-$ $SG_TEST_EXENV ${bindir:=.}/trace-categories$EXEEXT --cfg=tracing:yes --cfg=tracing/filename:categories.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
+$ ${bindir:=.}/trace-categories --cfg=tracing:yes --cfg=tracing/filename:categories.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'categories.trace'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
index 562364f..6124de2 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env tesh
 
 p Tracing user variables for hosts
-$ $SG_TEST_EXENV ${bindir:=.}/trace-host-user-variables$EXEEXT --cfg=tracing:yes --cfg=tracing/platform:yes ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
+$ ${bindir:=.}/trace-host-user-variables --cfg=tracing:yes --cfg=tracing/platform:yes ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
 > [0.004078] [msg_test/INFO] Declared host variables:
@@ -19,4 +19,4 @@ $ $SG_TEST_EXENV ${bindir:=.}/trace-host-user-variables$EXEEXT --cfg=tracing:yes
 $ rm -f simgrid.trace
 
 p Not tracing user variables
-$ $SG_TEST_EXENV ${bindir:=.}/trace-host-user-variables$EXEEXT ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
+$ ${bindir:=.}/trace-host-user-variables ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
index f143566..c79c433 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env tesh
 
 p Trace user variables associated to links of the platform file
-$ $SG_TEST_EXENV ${bindir:=.}/trace-link-user-variables$EXEEXT --cfg=tracing:yes --cfg=tracing/platform:yes ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
+$ ${bindir:=.}/trace-link-user-variables --cfg=tracing:yes --cfg=tracing/platform:yes ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
 
index 89e41f0..b46083d 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env tesh
 
 p Tracing master/worker application
-$ $SG_TEST_EXENV ${bindir:=.}/trace-masterworker$EXEEXT --cfg=tracing:yes --cfg=tracing/filename:trace-masterworker.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
+$ ${bindir:=.}/trace-masterworker --cfg=tracing:yes --cfg=tracing/filename:trace-masterworker.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'trace-masterworker.trace'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
@@ -15,7 +15,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/trace-masterworker$EXEEXT --cfg=tracing:yes --cfg=
 > [4.214821] [msg_trace_masterworker/INFO] msmark
 
 p Tracing master/worker application with xml config
-$ $SG_TEST_EXENV ${bindir:=.}/trace-masterworker$EXEEXT ${platfdir}/config_tracing.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
+$ ${bindir:=.}/trace-masterworker ${platfdir}/config_tracing.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'trace-masterworker.trace'
@@ -29,10 +29,10 @@ $ $SG_TEST_EXENV ${bindir:=.}/trace-masterworker$EXEEXT ${platfdir}/config_traci
 > [4.214821] [msg_trace_masterworker/INFO] msmark
 
 p Not tracing master/worker application
-$ $SG_TEST_EXENV ${bindir:=.}/trace-masterworker$EXEEXT ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
+$ ${bindir:=.}/trace-masterworker ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
 
 p Testing tracing by process
-$ $SG_TEST_EXENV ${bindir:=.}/trace-masterworker$EXEEXT --cfg=tracing:yes --cfg=tracing/msg/process:yes --cfg=tracing/filename:trace-masterworker.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
+$ ${bindir:=.}/trace-masterworker --cfg=tracing:yes --cfg=tracing/msg/process:yes --cfg=tracing/filename:trace-masterworker.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'trace-masterworker.trace'
index 0c3ab46..319a3e6 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env tesh
 
 p Tracing processes
-$ $SG_TEST_EXENV ${bindir:=.}/trace-process-migration$EXEEXT --cfg=tracing:yes --cfg=tracing/filename:procmig.trace --cfg=tracing/msg/process:yes ${platfdir}/small_platform.xml
+$ ${bindir:=.}/trace-process-migration --cfg=tracing:yes --cfg=tracing/filename:procmig.trace --cfg=tracing/msg/process:yes ${platfdir}/small_platform.xml
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'procmig.trace'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to 'yes'
index d372bca..54a1ed3 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env tesh
 
 p Trace user variables associated to links of the platform file
-$ $SG_TEST_EXENV ${bindir:=.}/trace-route-user-variables$EXEEXT --cfg=tracing:yes --cfg=tracing/platform:yes ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
+$ ${bindir:=.}/trace-route-user-variables --cfg=tracing:yes --cfg=tracing/platform:yes ${platfdir}/small_platform.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
 
index 929c084..bf07071 100644 (file)
@@ -4,7 +4,7 @@ p Test the loader of DAG written in the DOT format
 # The order differ when executed with gcc's thread sanitizer
 ! output sort
 
-$ $SG_TEST_EXENV ${bindir:=.}/dag-dotload/sd_dag-dotload --log=no_loc ${srcdir:=.}/../../platforms/cluster_backbone.xml ${srcdir:=.}/dag-dotload/dag.dot
+$ ${bindir:=.}/dag-dotload/sd_dag-dotload --log=no_loc ${srcdir:=.}/../../platforms/cluster_backbone.xml ${srcdir:=.}/dag-dotload/dag.dot
 > [0.000000] [xbt_cfg/INFO] Switching to the L07 model to handle parallel tasks.
 > [0.000000] [test/INFO] ------------------- Display all tasks of the loaded DAG ---------------------------
 > [0.000000] [sd_task/INFO] Displaying task root
@@ -217,7 +217,7 @@ $ cat ${srcdir:=.}/dag-dotload/dag.trace
 $ rm -f ${srcdir:=.}/dag-dotload/dag.trace ${srcdir:=.}/dot.dot
 
 ! expect return 2
-$ $SG_TEST_EXENV ${bindir:=.}/dag-dotload/sd_dag-dotload --log=no_loc ${srcdir:=.}/../../platforms/cluster_backbone.xml ${srcdir:=.}/dag-dotload/dag_with_cycle.dot
+$ ${bindir:=.}/dag-dotload/sd_dag-dotload --log=no_loc ${srcdir:=.}/../../platforms/cluster_backbone.xml ${srcdir:=.}/dag-dotload/dag_with_cycle.dot
 > [0.000000] [xbt_cfg/INFO] Switching to the L07 model to handle parallel tasks.
 > [0.000000] [sd_daxparse/WARNING] the task root is not marked
 > [0.000000] [sd_daxparse/WARNING] the task 1 is in a cycle
index 6294772..44fe501 100644 (file)
@@ -2,7 +2,7 @@
 p Test the DAX loader on a small DAX instance
 
 ! output sort
-$ $SG_TEST_EXENV ${bindir:=.}/daxload/sd_daxload --log=no_loc ${srcdir:=.}/../../platforms/cluster_backbone.xml ${srcdir:=.}/daxload/smalldax.xml
+$ ${bindir:=.}/daxload/sd_daxload --log=no_loc ${srcdir:=.}/../../platforms/cluster_backbone.xml ${srcdir:=.}/daxload/smalldax.xml
 > [0.000000] [xbt_cfg/INFO] Switching to the L07 model to handle parallel tasks.
 > [0.000000] [sd_daxparse/WARNING] Ignore file o1 size redefinition from 1000000 to 304
 > [0.000000] [sd_daxparse/WARNING] Ignore file o2 size redefinition from 1000000 to 304
@@ -127,7 +127,7 @@ $ cmake -E remove -f ${srcdir:=.}/dax.dot ${srcdir:=.}/daxload/smalldax.trace
 p Test the DAX loader with a DAX comprising a cycle.
 
 ! expect return 255
-$ $SG_TEST_EXENV ${bindir:=.}/daxload/sd_daxload --log=no_loc ${srcdir:=.}/../../platforms/cluster_backbone.xml ${srcdir:=.}/daxload/simple_dax_with_cycle.xml
+$ ${bindir:=.}/daxload/sd_daxload --log=no_loc ${srcdir:=.}/../../platforms/cluster_backbone.xml ${srcdir:=.}/daxload/simple_dax_with_cycle.xml
 > [0.000000] [xbt_cfg/INFO] Switching to the L07 model to handle parallel tasks.
 > [0.000000] [sd_daxparse/WARNING] the task root is not marked
 > [0.000000] [sd_daxparse/WARNING] the task 1@task1 is in a cycle
index 4586cf8..965cace 100644 (file)
@@ -2,7 +2,7 @@
 
 p Test of the management of failed tasks simdag
 
-$ $SG_TEST_EXENV ${bindir:=.}/fail/sd_fail ${srcdir:=.}/../../platforms/faulty_host.xml
+$ ${bindir:=.}/fail/sd_fail ${srcdir:=.}/../../platforms/faulty_host.xml
 > [0.000000] [xbt_cfg/INFO] Switching to the L07 model to handle parallel tasks.
 > [0.000000] [sd_fail/INFO] First test: COMP_SEQ task
 > [0.000000] [sd_fail/INFO] Schedule task 'Poor task' on 'Faulty Host'
index 80abf86..cf3d6a4 100644 (file)
@@ -2,7 +2,7 @@
 
 p Simple test of simdag with properties
 
-$ $SG_TEST_EXENV properties/sd_properties ${srcdir:=.}/../../platforms/prop.xml
+$ properties/sd_properties ${srcdir:=.}/../../platforms/prop.xml
 > [0.000000] [xbt_cfg/INFO] Switching to the L07 model to handle parallel tasks.
 > [0.000000] [test/INFO] Property list for host host1
 > [0.000000] [test/INFO]       Property: mem has value: 4
index 8861c46..b11294f 100644 (file)
@@ -4,7 +4,7 @@ p Test the loader of PTG (Parallel Task Graph) written in the DOT format
 # The order differ when executed with gcc's thread sanitizer
 ! output sort
 
-$ $SG_TEST_EXENV ${bindir:=.}/ptg-dotload/sd_ptg-dotload  ${srcdir:=.}/../../platforms/cluster_backbone.xml ${srcdir:=.}/ptg-dotload/ptg.dot
+$ ${bindir:=.}/ptg-dotload/sd_ptg-dotload  ${srcdir:=.}/../../platforms/cluster_backbone.xml ${srcdir:=.}/ptg-dotload/ptg.dot
 > [0.000000] [xbt_cfg/INFO] Switching to the L07 model to handle parallel tasks.
 > [0.000000] [test/INFO] ------------------- Display all tasks of the loaded DAG ---------------------------
 > [0.000000] [sd_task/INFO] Displaying task root
index b679780..b89f946 100644 (file)
@@ -2,7 +2,7 @@
 p Test the loader of DAG written in the DOT format
 
 ! expect return 2
-$ $SG_TEST_EXENV ${bindir:=.}/schedule-dotload/sd_schedule-dotload --log=no_loc  "--log=sd_dotparse.thres:verbose" ${srcdir:=.}/../../platforms/cluster_backbone.xml ${srcdir:=.}/schedule-dotload/dag_with_bad_schedule.dot
+$ ${bindir:=.}/schedule-dotload/sd_schedule-dotload --log=no_loc  "--log=sd_dotparse.thres:verbose" ${srcdir:=.}/../../platforms/cluster_backbone.xml ${srcdir:=.}/schedule-dotload/dag_with_bad_schedule.dot
 > [0.000000] [xbt_cfg/INFO] Switching to the L07 model to handle parallel tasks.
 > [0.000000] [sd_dotparse/VERBOSE] The schedule is ignored, task 'end' can not be scheduled on -1 hosts
 > [0.000000] [sd_dotparse/VERBOSE] The schedule is ignored, task '1' can not be scheduled on 0 hosts
@@ -15,7 +15,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/schedule-dotload/sd_schedule-dotload --log=no_loc
 # The order differ when executed with gcc's thread sanitizer
 ! output sort
 
-$ $SG_TEST_EXENV ${bindir:=.}/schedule-dotload/sd_schedule-dotload --log=no_loc ${srcdir:=.}/../../platforms/cluster_backbone.xml ${srcdir:=.}/schedule-dotload/dag_with_good_schedule.dot
+$ ${bindir:=.}/schedule-dotload/sd_schedule-dotload --log=no_loc ${srcdir:=.}/../../platforms/cluster_backbone.xml ${srcdir:=.}/schedule-dotload/dag_with_good_schedule.dot
 > [0.000000] [xbt_cfg/INFO] Switching to the L07 model to handle parallel tasks.
 > [0.000000] [test/INFO] ------------------- Display all tasks of the loaded DAG ---------------------------
 > [0.000000] [sd_task/INFO] Displaying task root
index 82069b3..54c637c 100644 (file)
@@ -2,7 +2,7 @@
 
 p Simple test of simdag
 
-$ $SG_TEST_EXENV ${bindir:=.}/scheduling/sd_scheduling --log=sd_daxparse.thresh:critical ${srcdir:=.}/../../platforms/simulacrum_7_hosts.xml ${srcdir:=.}/scheduling/Montage_25.xml
+$ ${bindir:=.}/scheduling/sd_scheduling --log=sd_daxparse.thresh:critical ${srcdir:=.}/../../platforms/simulacrum_7_hosts.xml ${srcdir:=.}/scheduling/Montage_25.xml
 > [0.000000] [xbt_cfg/INFO] Switching to the L07 model to handle parallel tasks.
 > [0.000000] [test/INFO] Schedule ID00002@mProjectPP on Host 27
 > [0.000105] [test/INFO] Schedule ID00000@mProjectPP on Host 26
index 7f03ba0..13cd10f 100644 (file)
@@ -3,7 +3,7 @@
 p Simple test of simdag
 
 ! output sort
-$ $SG_TEST_EXENV ./test/sd_test ${srcdir:=.}/../../platforms/small_platform.xml
+$ ./test/sd_test ${srcdir:=.}/../../platforms/small_platform.xml
 > [0.000000] [xbt_cfg/INFO] Switching to the L07 model to handle parallel tasks.
 > [0.000000] [sd_test/INFO] Computation time for 2000000.000000 flops on Jacquelin: 0.014563
 > [0.000000] [sd_test/INFO] Computation time for 1000000.000000 flops on Fafard: 0.013107
index e52369a..a389778 100644 (file)
@@ -4,7 +4,7 @@ p Modify the rate of communication tasks even when they are auto-scheduled
 # We need to sort this out because the order changes with the sanitizers (at least)
 ! output sort
 
-$ $SG_TEST_EXENV ./throttling/sd_throttling ${srcdir:=.}/../../platforms/cluster_backbone.xml
+$ ./throttling/sd_throttling ${srcdir:=.}/../../platforms/cluster_backbone.xml
 > [0.000000] [xbt_cfg/INFO] Switching to the L07 model to handle parallel tasks.
 > [5.000000] [sd_comm_throttling/INFO] Simulation stopped after 5.0000 seconds
 > [5.000000] [sd_comm_throttling/INFO] Task 'Task A' start time: 0.000000, finish time: 5.000000
index 3d2c6e1..f719abf 100644 (file)
@@ -2,7 +2,7 @@
 p Usage test of simdag's typed tasks
 
 ! output sort
-$ $SG_TEST_EXENV ./typed_tasks/sd_typed_tasks ${srcdir:=.}/../../platforms/cluster_backbone.xml
+$ ./typed_tasks/sd_typed_tasks ${srcdir:=.}/../../platforms/cluster_backbone.xml
 > [0.000000] [xbt_cfg/INFO] Switching to the L07 model to handle parallel tasks.
 > [2.080600] [sd_typed_tasks_test/INFO] Task 'Par. Comp. 3' start time: 0.000000, finish time: 0.400000
 > [2.080600] [sd_typed_tasks_test/INFO] Task 'Par. Comp. 1' start time: 0.000000, finish time: 0.400000
index 9596c01..18b19d1 100644 (file)
@@ -31,6 +31,30 @@ foreach (example actor-create actor-daemon actor-exiting actor-join actor-kill
                                    ${CMAKE_HOME_DIRECTORY}/examples/s4u/${example}/s4u-${example}.tesh)
 endforeach()
 
+
+# Model-checking examples: with only one source and tested with all factories but thread
+######################################################################
+
+foreach (example mc-failing-assert)
+  if(SIMGRID_HAVE_MC)
+    add_executable       (s4u-${example} EXCLUDE_FROM_ALL ${example}/s4u-${example}.cpp)
+    add_dependencies     (tests s4u-${example})
+    target_link_libraries(s4u-${example} simgrid)
+    set_target_properties(s4u-${example} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${example})
+
+  
+    ADD_TESH_FACTORIES(s4u-${example} "ucontext;raw;boost"
+                                      --setenv bindir=${CMAKE_CURRENT_BINARY_DIR}/${example} 
+                                   --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms 
+                                   --cd ${CMAKE_CURRENT_SOURCE_DIR}/${example} 
+                                   ${CMAKE_HOME_DIRECTORY}/examples/s4u/${example}/s4u-${example}.tesh)
+  endif()
+  
+  set(tesh_files    ${tesh_files}    ${CMAKE_CURRENT_SOURCE_DIR}/${example}/s4u-${example}.tesh)
+  set(examples_src  ${examples_src}  ${CMAKE_CURRENT_SOURCE_DIR}/${example}/s4u-${example}.cpp)
+endforeach()
+
+
 # Multi-files examples
 ######################
 
index 1fab295..5adf1d3 100644 (file)
@@ -408,6 +408,23 @@ Distributed Hash Tables (DHT)
 
 .. TODO:: document here the examples about plugins
 
+=======================
+Model-Checking Examples
+=======================
+
+The model-checker can be used to exhaustively search for issues in the
+tested application. It must be activated at compile time, but this
+mode is rather experimental in SimGrid (as of v3.22). You should not
+enable it unless you really want to formally verify your applications:
+SimGrid is slower and maybe less robust when MC is enabled.
+
+  - **Failing assert**
+    In this example, two actors send some data to a central server,
+    which asserts that the messages are always received in the same order.
+    This is obviously wrong, and the model-checker correctly finds a
+    counter-example to that assertion.
+    |br| `examples/s4u/mc-failing-assert/s4u-mc-failing-assert.cpp <https://framagit.org/simgrid/simgrid/tree/master/examples/s4u/mc-failing-assert/s4u-mc-failing-assert.cpp>`_
+
 .. |br| raw:: html
 
    <br />
index 58a2574..994a3f9 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-actor-create
+$ ${bindir:=.}/s4u-actor-create
 > [Tremblay:sender1:(2) 0.000000] [s4u_actor_create/INFO] Hello s4u, I have something to send
 > [Jupiter:sender2:(3) 0.000000] [s4u_actor_create/INFO] Hello s4u, I have something to send
 > [Fafard:sender:(4) 0.000000] [s4u_actor_create/INFO] Hello s4u, I have something to send
index 5f7cb69..82593d2 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing the process daemonization feature
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-actor-daemon ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-actor-daemon ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
 > [  0.000000] (worker@Boivin) Let's do some work (for 10 sec on Boivin).
 > [  0.000000] (daemon@Tremblay) Hello from the infinite loop
 > [  3.000000] (daemon@Tremblay) Hello from the infinite loop
index d5a15ed..703cee5 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-actor-exiting ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-actor-exiting ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
 > [ 10.194200] (A@Tremblay) I stop now
 > [ 10.194200] (maestro@) Actor A stops now
 > [ 26.213694] (maestro@) Actor B stops now
index b03b3e2..bf1b153 100644 (file)
@@ -1,4 +1,4 @@
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-actor-join$EXEEXT ${platfdir}/small_platform.xml
+$ ${bindir:=.}/s4u-actor-join ${platfdir}/small_platform.xml
 > [Tremblay:master:(1) 0.000000] [s4u_test/INFO] Start sleeper
 > [Tremblay:sleeper from master:(2) 0.000000] [s4u_test/INFO] Sleeper started
 > [Tremblay:master:(1) 0.000000] [s4u_test/INFO] Join the sleeper (timeout 2)
index ba2afdc..603cd8d 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-actor-kill ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-actor-kill ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
 > [  0.000000] (killer@Tremblay) Hello!
 > [  0.000000] (victim A@Fafard) Hello!
 > [  0.000000] (victim A@Fafard) Suspending myself
index 2a70e45..c3d3b15 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-actor-lifetime ${platfdir}/cluster_backbone.xml s4u-actor-lifetime_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-actor-lifetime ${platfdir}/cluster_backbone.xml s4u-actor-lifetime_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:sleeper@node-0.simgrid.org) Hello! I go to sleep.
 > [  0.000000] (2:sleeper@node-1.simgrid.org) Hello! I go to sleep.
 > [  2.000000] (3:sleeper@node-0.simgrid.org) Hello! I go to sleep.
index ef8867a..6b05f06 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing the actor migration feature 
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-actor-migrate ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-actor-migrate ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
 > [  0.000000] (worker@Fafard) Let's move to Boivin to execute 1177.14 Mflops (5sec on Boivin and 5sec on Jacquelin)
 > [  5.000000] (monitor@Boivin) After 5 seconds, move the process to Jacquelin
 > [ 10.000000] (worker@Jacquelin) I wake up on Jacquelin. Let's suspend a bit
index 840b482..a443c7f 100644 (file)
@@ -3,7 +3,7 @@
 p Testing the suspend/resume feature of S4U
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-actor-suspend ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-actor-suspend ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
 > [  0.000000] (dream_master@Boivin) Let's create a lazy guy.
 > [  0.000000] (Lazy@Boivin) Nobody's watching me ? Let's go to sleep.
 > [  0.000000] (dream_master@Boivin) Let's wait a little bit...
index b61c4f2..69503ff 100644 (file)
@@ -1,5 +1,5 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-actor-yield ${platfdir}/small_platform_fatpipe.xml s4u-actor-yield_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-actor-yield ${platfdir}/small_platform_fatpipe.xml s4u-actor-yield_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:yielder@Tremblay) I yielded 10 times. Goodbye now!
 > [  0.000000] (2:yielder@Ruby) I yielded 15 times. Goodbye now!
index a72f286..c4790e7 100644 (file)
@@ -4,7 +4,7 @@ p Testing the Bittorrent implementation with S4U
 
 ! timeout 10
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-bittorrent ${platfdir}/cluster_backbone.xml s4u-app-bittorrent_d.xml "--log=root.fmt:[%12.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-bittorrent ${platfdir}/cluster_backbone.xml s4u-app-bittorrent_d.xml "--log=root.fmt:[%12.6r]%e(%i:%P@%h)%e%m%n"
 > [    0.000000] (1:tracker@node-0.simgrid.org) Tracker launched.
 > [    0.000000] (2:peer@node-1.simgrid.org) Hi, I'm joining the network with id 2
 > [    0.000000] (3:peer@node-2.simgrid.org) Hi, I'm joining the network with id 3
index db14255..c025625 100644 (file)
@@ -4,7 +4,7 @@ p Testing the chainsend S4U implementation
 
 ! timeout 60
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-app-chainsend ${platfdir}/cluster_backbone.xml "--log=root.fmt:[%12.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-app-chainsend ${platfdir}/cluster_backbone.xml "--log=root.fmt:[%12.6r]%e(%i:%P@%h)%e%m%n"
 > [    2.214423] (2:peer@node-1.simgrid.org) ### 2.214423 16777216 bytes (Avg 7.225360 MB/s); copy finished (simulated).
 > [    2.222796] (3:peer@node-2.simgrid.org) ### 2.222796 16777216 bytes (Avg 7.198141 MB/s); copy finished (simulated).
 > [    2.231170] (4:peer@node-3.simgrid.org) ### 2.231170 16777216 bytes (Avg 7.171127 MB/s); copy finished (simulated).
index 4abff13..a1e38ca 100644 (file)
@@ -3,7 +3,7 @@
 p Testing a simple master/workers example application
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-app-masterworkers-class$EXEEXT ${platfdir}/small_platform.xml s4u-app-masterworkers_d.xml --trace "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-app-masterworkers-class ${platfdir}/small_platform.xml s4u-app-masterworkers_d.xml --trace "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
 > [  0.000000] (master@Tremblay) Got 5 workers and 20 tasks to process
 > [  0.000000] (master@Tremblay) Sending task 0 of 20 to mailbox 'Tremblay'
 > [  0.002265] (master@Tremblay) Sending task 1 of 20 to mailbox 'Jupiter'
@@ -34,7 +34,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/s4u-app-masterworkers-class$EXEEXT ${platfdir}/sma
 > [  5.133855] (worker@Bourassa) Exiting now.
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-app-masterworkers-fun$EXEEXT ${platfdir}/small_platform.xml s4u-app-masterworkers_d.xml --trace "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-app-masterworkers-fun ${platfdir}/small_platform.xml s4u-app-masterworkers_d.xml --trace "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
 > [  0.000000] (master@Tremblay) Got 5 workers and 20 tasks to process
 > [  0.000000] (master@Tremblay) Sending task 0 of 20 to mailbox 'Tremblay'
 > [  0.002265] (master@Tremblay) Sending task 1 of 20 to mailbox 'Jupiter'
index 8140c69..fa82acc 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing with default compound
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-app-pingpong$EXEEXT ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-app-pingpong ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:pinger@Tremblay) Ping from mailbox Mailbox 1 to mailbox Mailbox 2
 > [  0.000000] (2:ponger@Jupiter) Pong from mailbox Mailbox 2 to mailbox Mailbox 1
 > [  0.019014] (2:ponger@Jupiter) Task received : small communication (latency bound)
@@ -14,7 +14,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/s4u-app-pingpong$EXEEXT ${platfdir}/small_platform
 
 p Testing with default compound Full network optimization
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-app-pingpong$EXEEXT ${platfdir}/small_platform.xml "--cfg=network/optim:Full" "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-app-pingpong ${platfdir}/small_platform.xml "--cfg=network/optim:Full" "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/optim' to 'Full'
 > [  0.000000] (1:pinger@Tremblay) Ping from mailbox Mailbox 1 to mailbox Mailbox 2
 > [  0.000000] (2:ponger@Jupiter) Pong from mailbox Mailbox 2 to mailbox Mailbox 1
@@ -27,7 +27,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/s4u-app-pingpong$EXEEXT ${platfdir}/small_platform
 
 p Testing the deprecated CM02 network model
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-app-pingpong$EXEEXT ${platfdir}/small_platform.xml --cfg=cpu/model:Cas01 --cfg=network/model:CM02 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-app-pingpong ${platfdir}/small_platform.xml --cfg=cpu/model:Cas01 --cfg=network/model:CM02 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'cpu/model' to 'Cas01'
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'CM02'
 > [  0.000000] (1:pinger@Tremblay) Ping from mailbox Mailbox 1 to mailbox Mailbox 2
@@ -41,7 +41,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/s4u-app-pingpong$EXEEXT ${platfdir}/small_platform
 
 p Testing the surf network Reno fairness model using lagrangian approach
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-app-pingpong$EXEEXT ${platfdir}/small_platform.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Reno" --log=surf_lagrange.thres=critical "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-app-pingpong ${platfdir}/small_platform.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Reno" --log=surf_lagrange.thres=critical "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'compound'
 > [  0.000000] (0:maestro@) Configuration change: Set 'cpu/model' to 'Cas01'
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'Reno'
@@ -56,7 +56,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/s4u-app-pingpong$EXEEXT ${platfdir}/small_platform
 
 p Testing the surf network Reno2 fairness model using lagrangian approach
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-app-pingpong$EXEEXT ${platfdir}/small_platform.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Reno2" --log=surf_lagrange.thres=critical "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-app-pingpong ${platfdir}/small_platform.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Reno2" --log=surf_lagrange.thres=critical "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'compound'
 > [  0.000000] (0:maestro@) Configuration change: Set 'cpu/model' to 'Cas01'
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'Reno2'
@@ -71,7 +71,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/s4u-app-pingpong$EXEEXT ${platfdir}/small_platform
 
 p Testing the surf network Vegas fairness model using lagrangian approach
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-app-pingpong$EXEEXT ${platfdir}/small_platform.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Vegas" "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-app-pingpong ${platfdir}/small_platform.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Vegas" "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'compound'
 > [  0.000000] (0:maestro@) Configuration change: Set 'cpu/model' to 'Cas01'
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'Vegas'
@@ -86,7 +86,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/s4u-app-pingpong$EXEEXT ${platfdir}/small_platform
 
 p Testing the surf network constant model
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-app-pingpong$EXEEXT ${platfdir}/small_platform_constant.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Constant" "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-app-pingpong ${platfdir}/small_platform_constant.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Constant" "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'compound'
 > [  0.000000] (0:maestro@) Configuration change: Set 'cpu/model' to 'Cas01'
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'Constant'
index 7ba0907..b2efa12 100644 (file)
@@ -3,7 +3,7 @@
 p Testing option --cfg=simix/breakpoint
 
 ! expect signal SIGTRAP
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-app-pingpong$EXEEXT ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=simix/breakpoint:3.1416
+$ ${bindir:=.}/s4u-app-pingpong ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=simix/breakpoint:3.1416
 > [  0.000000] (0:maestro@) Configuration change: Set 'simix/breakpoint' to '3.1416'
 > [  0.000000] (1:pinger@Tremblay) Ping from mailbox Mailbox 1 to mailbox Mailbox 2
 > [  0.000000] (2:ponger@Jupiter) Pong from mailbox Mailbox 2 to mailbox Mailbox 1
index a22c51b..6429883 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-app-token-ring ${platfdir}/routing_cluster.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-app-token-ring ${platfdir}/routing_cluster.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
 > [  0.000000] (maestro@) Number of hosts '6'
 > [  0.000000] (0@host1) Host "0" send 'Token' to Host "1"
 > [  0.017354] (1@host2) Host "1" received "Token"
@@ -16,7 +16,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/s4u-app-token-ring ${platfdir}/routing_cluster.xml
 > [  0.131796] (0@host1) Host "0" received "Token"
 > [  0.131796] (maestro@) Simulation time 0.131796
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-app-token-ring ${platfdir}/two_peers.xml "--log=root.fmt:[%12.6r]%e(%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-app-token-ring ${platfdir}/two_peers.xml "--log=root.fmt:[%12.6r]%e(%P@%h)%e%m%n"
 > [    0.000000] (maestro@) Number of hosts '2'
 > [    0.000000] (0@100030591) Host "0" send 'Token' to Host "1"
 > [    0.624423] (1@100036570) Host "1" received "Token"
@@ -24,7 +24,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/s4u-app-token-ring ${platfdir}/two_peers.xml "--lo
 > [    1.248846] (0@100030591) Host "0" received "Token"
 > [    1.248846] (maestro@) Simulation time 1.24885
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-app-token-ring ${platfdir}/meta_cluster.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-app-token-ring ${platfdir}/meta_cluster.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
 > [  0.000000] (maestro@) Number of hosts '60'
 > [  0.000000] (0@host-1.cluster1) Host "0" send 'Token' to Host "1"
 > [  0.030364] (1@host-1.cluster2) Host "1" received "Token"
index 008c23c..d5d2591 100644 (file)
@@ -2,7 +2,7 @@
 
 p Test1 Peer sending and receiving
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-async-ready ${platfdir}/small_platform_fatpipe.xml s4u-async-ready_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-async-ready ${platfdir}/small_platform_fatpipe.xml s4u-async-ready_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:peer@Tremblay) Send 'Message 0 from peer 0' to 'peer-1'
 > [  0.000000] (2:peer@Ruby) Send 'Message 0 from peer 1' to 'peer-0'
 > [  0.000000] (1:peer@Tremblay) Send 'Message 0 from peer 0' to 'peer-2'
index 8f9f795..dcdaac0 100644 (file)
@@ -2,7 +2,7 @@
 
 p Test1 Sleep_sender > Sleep_receiver
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-async-wait ${platfdir}/small_platform_fatpipe.xml s4u-async-wait_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-async-wait ${platfdir}/small_platform_fatpipe.xml s4u-async-wait_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:sender@Tremblay) Send 'Message 0' to 'receiver-0'
 > [  0.000000] (2:receiver@Ruby) Wait for my first message
 > [  0.000000] (1:sender@Tremblay) Send 'Message 1' to 'receiver-0'
index bdec4c9..04168e4 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-async-waitall ${platfdir}/small_platform_fatpipe.xml s4u-async-waitall_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-async-waitall ${platfdir}/small_platform_fatpipe.xml s4u-async-waitall_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:sender@Tremblay) Send 'Message 0' to 'receiver-0'
 > [  0.000000] (2:receiver@Ruby) Wait for my first message
 > [  0.000000] (3:receiver@Perl) Wait for my first message
index 27eec6b..5f3dee8 100644 (file)
@@ -3,7 +3,7 @@
 p Testing this_actor->wait_any()
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-async-waitany ${platfdir}/small_platform.xml s4u-async-waitany_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-async-waitany ${platfdir}/small_platform.xml s4u-async-waitany_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:sender@Tremblay) Send 'Message 0' to 'receiver-0'
 > [  0.000000] (2:receiver@Fafard) Wait for my first message
 > [  0.000000] (3:receiver@Jupiter) Wait for my first message
index 6d77ade..c3f2bc5 100644 (file)
@@ -2,7 +2,7 @@
 
 p Test1 Sleep_sender > Sleep_receiver
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-async-waituntil ${platfdir}/small_platform_fatpipe.xml s4u-async-waituntil_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-async-waituntil ${platfdir}/small_platform_fatpipe.xml s4u-async-waituntil_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:sender@Tremblay) Send 'Message 0' to 'receiver-0'
 > [  0.000000] (2:receiver@Ruby) Wait for my first message
 > [  0.000000] (1:sender@Tremblay) Send 'Message 1' to 'receiver-0'
index 0911d20..31ddb72 100644 (file)
@@ -1,5 +1,5 @@
 ! output sort
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-cloud-capping ${platfdir}/small_platform.xml --log=no_loc "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-cloud-capping ${platfdir}/small_platform.xml --log=no_loc "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:master_@Fafard) # 1. Put a single task on a PM. 
 > [  0.000000] (1:master_@Fafard) ### Test: with/without task set_bound
 > [  0.000000] (1:master_@Fafard) ### Test: no bound for Task1@Fafard
index f18aa46..02628ea 100644 (file)
@@ -1,4 +1,4 @@
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-cloud-migration ${platfdir}/small_platform.xml --log=no_loc "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-cloud-migration ${platfdir}/small_platform.xml --log=no_loc "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:master_@Fafard) Test: Migrate a VM with 1000 Mbytes RAM
 > [132.765801] (1:master_@Fafard) VM0 migrated: Fafard->Tremblay in 132.766 s
 > [132.765801] (1:master_@Fafard) Test: Migrate a VM with 100 Mbytes RAM
index 87e6c25..6b21017 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing a vm with two successive tasks
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-cloud-simple$EXEEXT --log=no_loc ${platfdir:=.}/small_platform.xml
+$ ${bindir:=.}/s4u-cloud-simple --log=no_loc ${platfdir:=.}/small_platform.xml
 > [Fafard:master_:(1) 0.000000] [s4u_test/INFO] ## Test 1 (started): check computation on normal PMs
 > [Fafard:master_:(1) 0.000000] [s4u_test/INFO] ### Put a task on a PM
 > [Fafard:compute:(2) 0.013107] [s4u_test/INFO] Fafard:compute task executed 0.0131068
index dab06c1..9e8fe7c 100644 (file)
@@ -3,7 +3,7 @@
 p Testing the Chord implementation with S4U
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-dht-chord$EXEEXT -nb_bits=3 ${platfdir}/cluster_backbone.xml s4u-dht-chord_d.xml --log=s4u_chord.thres:verbose "--log=root.fmt:[%10.5r]%e(%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-dht-chord -nb_bits=3 ${platfdir}/cluster_backbone.xml s4u-dht-chord_d.xml --log=s4u_chord.thres:verbose "--log=root.fmt:[%10.5r]%e(%P@%h)%e%m%n"
 > [   0.00000] (node@node-0.simgrid.org) My finger table:
 > [   0.00000] (node@node-0.simgrid.org) Start | Succ
 > [   0.00000] (node@node-0.simgrid.org)    3  |  42
index 4370d15..b92c7a6 100644 (file)
@@ -3,7 +3,7 @@
 p Testing the Kademlia implementation with S4U
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-dht-kademlia ${platfdir}/cluster_backbone.xml ${srcdir:=.}/s4u-dht-kademlia_d.xml "--log=root.fmt:[%10.6r]%e(%02i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-dht-kademlia ${platfdir}/cluster_backbone.xml ${srcdir:=.}/s4u-dht-kademlia_d.xml "--log=root.fmt:[%10.6r]%e(%02i:%P@%h)%e%m%n"
 > [  0.000000] ( 1:node@node-0.simgrid.org) Hi, I'm going to create the network with id 0
 > [  0.000000] ( 2:node@node-1.simgrid.org) Hi, I'm going to join the network with id 1
 > [  0.000000] ( 3:node@node-2.simgrid.org) Hi, I'm going to join the network with id 3
index 9c6a7ad..7a1c301 100644 (file)
@@ -2,7 +2,7 @@
 
 p Modeling the host energy consumption during boot and shutdown
 
-$ ${bindir:=.}/s4u-energy-boot$EXEEXT ${srcdir:=.}/platform_boot.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-energy-boot ${srcdir:=.}/platform_boot.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:Boot Monitor@MyHost2) Initial pstate: 0; Energy dissipated so far:0E+00 J
 > [  0.000000] (1:Boot Monitor@MyHost2) Sleep for 10 seconds
 > [ 10.000000] (1:Boot Monitor@MyHost2) Done sleeping. Current pstate: 0; Energy dissipated so far: 950.00 J
@@ -23,7 +23,7 @@ $ ${bindir:=.}/s4u-energy-boot$EXEEXT ${srcdir:=.}/platform_boot.xml "--log=root
 > [177.000000] (0:maestro@) Energy consumption of host MyHost1: 19820.000000 Joules
 > [177.000000] (0:maestro@) Energy consumption of host MyHost2: 17700.000000 Joules
 
-$ ${bindir:=.}/s4u-energy-boot$EXEEXT ${srcdir:=.}/platform_boot.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=host/model:ptask_L07
+$ ${bindir:=.}/s4u-energy-boot ${srcdir:=.}/platform_boot.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=host/model:ptask_L07
 > [  0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'ptask_L07'
 > [  0.000000] (0:maestro@) Switching to the L07 model to handle parallel tasks.
 > [  0.000000] (1:Boot Monitor@MyHost2) Initial pstate: 0; Energy dissipated so far:0E+00 J
index ab583ae..e475904 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing the mechanism for computing host energy consumption
 
-$ ${bindir:=.}/s4u-energy-exec$EXEEXT ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-energy-exec ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:dvfs_test@MyHost1) Energetic profile: 100.0:120.0:200.0, 93.0:110.0:170.0, 90.0:105.0:150.0
 > [  0.000000] (1:dvfs_test@MyHost1) Initial peak speed=1E+08 flop/s; Energy dissipated =0E+00 J
 > [  0.000000] (1:dvfs_test@MyHost1) Sleep for 10 seconds
@@ -22,7 +22,7 @@ $ ${bindir:=.}/s4u-energy-exec$EXEEXT ${platfdir}/energy_platform.xml "--log=roo
 > [ 30.000000] (0:maestro@) Energy consumption of host MyHost2: 2100.000000 Joules
 > [ 30.000000] (0:maestro@) Energy consumption of host MyHost3: 3000.000000 Joules
 
-$ ${bindir:=.}/s4u-energy-exec$EXEEXT ${platfdir}/energy_cluster.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=host/model:ptask_L07
+$ ${bindir:=.}/s4u-energy-exec ${platfdir}/energy_cluster.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=host/model:ptask_L07
 > [  0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'ptask_L07'
 > [  0.000000] (0:maestro@) Switching to the L07 model to handle parallel tasks.
 > [  0.000000] (1:dvfs_test@MyHost1) Energetic profile: 100.0:120.0:200.0, 93.0:110.0:170.0, 90.0:105.0:150.0
index 1e1c65d..c3b63c9 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing the mechanism for computing link energy consumption (using CM02 as a network model)
 
-$ ${bindir:=.}/s4u-energy-link$EXEEXT ${platfdir}/energy_platform.xml  "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=network/model:CM02 --cfg=network/crosstraffic:no
+$ ${bindir:=.}/s4u-energy-link ${platfdir}/energy_platform.xml  "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=network/model:CM02 --cfg=network/crosstraffic:no
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'CM02'
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/crosstraffic' to 'no'
 > [  0.000000] (0:maestro@) Activating the SimGrid link energy plugin
@@ -15,7 +15,7 @@ $ ${bindir:=.}/s4u-energy-link$EXEEXT ${platfdir}/energy_platform.xml  "--log=ro
 
 p And now test with 500000 bytes
 
-$ ${bindir:=.}/s4u-energy-link$EXEEXT ${platfdir}/energy_platform.xml 1 50000000 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=network/model:CM02 --cfg=network/crosstraffic:no
+$ ${bindir:=.}/s4u-energy-link ${platfdir}/energy_platform.xml 1 50000000 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=network/model:CM02 --cfg=network/crosstraffic:no
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'CM02'
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/crosstraffic' to 'no'
 > [  0.000000] (0:maestro@) Activating the SimGrid link energy plugin
index 3b8b7ac..10f5dbf 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing the mechanism for computing host energy consumption in case of VMs
 
-$ ${bindir:=.}/s4u-energy-vm$EXEEXT ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-energy-vm ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:dvfs@MyHost1) Creating and starting two VMs
 > [  0.000000] (1:dvfs@MyHost1) Create two tasks on Host1: both inside a VM
 > [  0.000000] (1:dvfs@MyHost1) Create two tasks on Host2: one inside a VM, the other directly on the host
index 07f0d99..157a40d 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env tesh
 
 p Let's filter some hosts...
-$ ${bindir:=.}/s4u-engine-filtering$EXEEXT ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=network/model:CM02 --cfg=network/crosstraffic:no
+$ ${bindir:=.}/s4u-engine-filtering ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=network/model:CM02 --cfg=network/crosstraffic:no
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'CM02'
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/crosstraffic' to 'no'
 > [  0.000000] (0:maestro@) Hosts currently registered with this engine: 3
index 7b58519..989c786 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-exec-async$EXEEXT ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-exec-async ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:wait@Fafard) Execute 7.6296e+07 flops, should take 1 second.
 > [  0.000000] (2:monitor@Ginette) Execute 4.8492e+07 flops, should take 1 second.
 > [  0.000000] (3:cancel@Boivin) Execute 9.8095e+07 flops, should take 1 second.
index 4a45344..b4bed5d 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
 p Start remote processes 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-exec-basic$EXEEXT ${platfdir}/small_platform.xml 
+$ ${bindir:=.}/s4u-exec-basic ${platfdir}/small_platform.xml 
 > [Tremblay:privileged:(2) 0.001500] [s4u_test/INFO] Done.
 > [Tremblay:executor:(1) 0.002000] [s4u_test/INFO] Done.
index 3b8a702..bbc7cb5 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing the DVFS-related functions
 
-$ ${bindir:=.}/s4u-exec-dvfs$EXEEXT ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-exec-dvfs ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:dvfs_test@MyHost1) Count of Processor states=3
 > [  0.000000] (1:dvfs_test@MyHost1) Current power peak=100000000.000000
 > [  0.000000] (2:dvfs_test@MyHost2) Count of Processor states=3
@@ -21,7 +21,7 @@ $ ${bindir:=.}/s4u-exec-dvfs$EXEEXT ${platfdir}/energy_platform.xml "--log=root.
 > [  6.000000] (2:dvfs_test@MyHost2) Current power peak=20000000.000000
 > [  6.000000] (0:maestro@) Total simulation time: 6.000000e+00
 
-$ ${bindir:=.}/s4u-exec-dvfs$EXEEXT ${platfdir}/energy_cluster.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-exec-dvfs ${platfdir}/energy_cluster.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:dvfs_test@MyHost1) Count of Processor states=3
 > [  0.000000] (1:dvfs_test@MyHost1) Current power peak=100000000.000000
 > [  0.000000] (2:dvfs_test@MyHost2) Count of Processor states=3
index e8dde98..d7cb538 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ ${bindir:=.}/s4u-exec-ptask$EXEEXT ${platfdir}/energy_platform.xml --cfg=host/model:ptask_L07 --cfg=tracing:yes --cfg=tracing/uncategorized:yes --log=instr_resource.t:debug --log=no_loc "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-exec-ptask ${platfdir}/energy_platform.xml --cfg=host/model:ptask_L07 --cfg=tracing:yes --cfg=tracing/uncategorized:yes --log=instr_resource.t:debug --log=no_loc "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'ptask_L07'
 > [  0.000000] (0:maestro@) Configuration change: Set 'tracing' to 'yes'
 > [  0.000000] (0:maestro@) Configuration change: Set 'tracing/uncategorized' to 'yes'
index 9164daa..6819e40 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env tesh
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-exec-remote$EXEEXT ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-exec-remote ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:test@Fafard) I'm a wizard! I can run a task on the Ginette host from the Fafard one! Look!
 > [  0.000000] (1:test@Fafard) It started. Running 48.492Mf takes exactly one second on Ginette (but not on Fafard).
 > [  0.100000] (1:test@Fafard) Loads in flops/s: Boivin=0; Fafard=0; Ginette=48492000
index 3a32add..d2a6acb 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-io-async$EXEEXT ${platfdir}/storage/storage.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-io-async ${platfdir}/storage/storage.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:test@bob) Hello! read 20000000 bytes from Storage Disk1
 > [  0.000000] (2:test_cancel@alice) Hello! write 50000000 bytes from Storage Disk2
 > [  0.200000] (1:test@bob) Goodbye now!
index 6781b50..1f5c26c 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ ${bindir:=.}/s4u-io-file-remote$EXEEXT ${platfdir}/storage/remote_io.xml s4u-io-file-remote_d.xml "--log=root.fmt:[%10.6r]%e(%i@%5h)%e%m%n"
+$ ${bindir:=.}/s4u-io-file-remote ${platfdir}/storage/remote_io.xml s4u-io-file-remote_d.xml "--log=root.fmt:[%10.6r]%e(%i@%5h)%e%m%n"
 > [  0.000000] (0@     ) Init: 12/476824 MiB used/free on 'Disk1'
 > [  0.000000] (0@     ) Init: 2280/474556 MiB used/free on 'Disk2'
 > [  0.000000] (1@alice) Opened file 'c:\Windows\setupact.log'
index 303cbb3..54e4fa3 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-io-file-system ${platfdir}/storage/storage.xml
+$ ${bindir:=.}/s4u-io-file-system ${platfdir}/storage/storage.xml
 > [denise:host:(1) 0.000000] [s4u_test/INFO] Storage info on denise:
 > [denise:host:(1) 0.000000] [s4u_test/INFO]     Disk2 (c:) Used: 2391537133; Free: 534479374867; Total: 536870912000.
 > [denise:host:(1) 0.000000] [s4u_test/INFO]     Disk4 (/home) Used: 13221994; Free: 536857690006; Total: 536870912000.
index 65b09de..2f507ce 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ ${bindir}/s4u-io-storage-raw$EXEEXT ${platfdir}/storage/storage.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir}/s4u-io-storage-raw ${platfdir}/storage/storage.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:@denise) *** Storage info on denise ***
 > [  0.000000] (1:@denise) Storage name: Disk2, mount name: c:
 > [  0.000000] (1:@denise) Storage name: Disk4, mount name: /home
index cf21b21..fb1fc88 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-maestro-set$EXEEXT ${platfdir:=.}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-maestro-set ${platfdir:=.}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) I am not the main thread, as expected
 > [  0.000000] (2:receiver@Jupiter) I am not the main thread, as expected
 > [  0.000000] (1:sender@Tremblay) I am the main thread, as expected
diff --git a/examples/s4u/mc-failing-assert/s4u-mc-failing-assert.cpp b/examples/s4u/mc-failing-assert/s4u-mc-failing-assert.cpp
new file mode 100644 (file)
index 0000000..b87e6f4
--- /dev/null
@@ -0,0 +1,62 @@
+/* Copyright (c) 2010-2019. 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. */
+
+/******************** Non-deterministic message ordering  *********************/
+/* Server assumes a fixed order in the reception of messages from its clients */
+/* which is incorrect because the message ordering is non-deterministic       */
+/******************************************************************************/
+
+#include <simgrid/modelchecker.h>
+#include <simgrid/s4u.hpp>
+
+XBT_LOG_NEW_DEFAULT_CATEGORY(mc_assert_example, "Logging channel used in this example");
+
+static int server(int worker_amount)
+{
+  int value_got             = -1;
+  simgrid::s4u::Mailbox* mb = simgrid::s4u::Mailbox::by_name("server");
+  for (int count = 0; count < worker_amount; count++) {
+    int* msg  = static_cast<int*>(mb->get());
+    value_got = *msg;
+    delete msg;
+  }
+  /*
+   * We assert here that the last message we got (which overwrite any previously received message) is the one from the
+   * last worker This will obviously fail when the messages are received out of order.
+   */
+  MC_assert(value_got == 2);
+
+  XBT_INFO("OK");
+  return 0;
+}
+
+static int client(int rank)
+{
+  /* I just send my rank onto the mailbox. It must be passed as a stable memory block (thus the new) so that that
+   * memory survives even after the end of the client */
+
+  simgrid::s4u::Mailbox* mailbox = simgrid::s4u::Mailbox::by_name("server");
+  mailbox->put(new int(rank), 1 /* communication cost is not really relevant in MC mode */);
+
+  XBT_INFO("Sent!");
+  return 0;
+}
+
+int main(int argc, char* argv[])
+{
+  simgrid::s4u::Engine e(&argc, argv);
+  xbt_assert(argc > 1, "Usage: %s platform_file\n", argv[0]);
+
+  e.load_platform(argv[1]);
+  auto hosts = e.get_all_hosts();
+  xbt_assert(hosts.size() >= 3, "This example requires at least 3 hosts");
+
+  simgrid::s4u::Actor::create("server", hosts[0], &server, 2);
+  simgrid::s4u::Actor::create("client1", hosts[1], &client, 1);
+  simgrid::s4u::Actor::create("client2", hosts[2], &client, 2);
+
+  e.run();
+  return 0;
+}
diff --git a/examples/s4u/mc-failing-assert/s4u-mc-failing-assert.tesh b/examples/s4u/mc-failing-assert/s4u-mc-failing-assert.tesh
new file mode 100644 (file)
index 0000000..24e5927
--- /dev/null
@@ -0,0 +1,28 @@
+#!/usr/bin/env tesh
+
+! expect return 1
+! timeout 20
+$ ${bindir:=.}/../../../bin/simgrid-mc ${bindir:=.}/s4u-mc-failing-assert ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --log=xbt_cfg.thresh:warning
+> [  0.000000] (0:maestro@) Check a safety property. Reduction is: dpor.
+> [  0.000000] (2:client1@Bourassa) Sent!
+> [  0.000000] (1:server@Boivin) OK
+> [  0.000000] (3:client2@Fafard) Sent!
+> [  0.000000] (2:client1@Bourassa) Sent!
+> [  0.000000] (2:client1@Bourassa) Sent!
+> [  0.000000] (1:server@Boivin) OK
+> [  0.000000] (3:client2@Fafard) Sent!
+> [  0.000000] (2:client1@Bourassa) Sent!
+> [  0.000000] (0:maestro@) **************************
+> [  0.000000] (0:maestro@) *** PROPERTY NOT VALID ***
+> [  0.000000] (0:maestro@) **************************
+> [  0.000000] (0:maestro@) Counter-example execution trace:
+> [  0.000000] (0:maestro@)   [(1)Boivin (server)] iRecv(dst=(1)Boivin (server), buff=(verbose only), size=(verbose only))
+> [  0.000000] (0:maestro@)   [(3)Fafard (client2)] iSend(src=(3)Fafard (client2), buff=(verbose only), size=(verbose only))
+> [  0.000000] (0:maestro@)   [(1)Boivin (server)] Wait(comm=(verbose only) [(3)Fafard (client2)-> (1)Boivin (server)])
+> [  0.000000] (0:maestro@)   [(1)Boivin (server)] iRecv(dst=(1)Boivin (server), buff=(verbose only), size=(verbose only))
+> [  0.000000] (0:maestro@)   [(2)Bourassa (client1)] iSend(src=(2)Bourassa (client1), buff=(verbose only), size=(verbose only))
+> [  0.000000] (0:maestro@)   [(1)Boivin (server)] Wait(comm=(verbose only) [(2)Bourassa (client1)-> (1)Boivin (server)])
+> [  0.000000] (0:maestro@) Path = 1;3;1;1;2;1
+> [  0.000000] (0:maestro@) Expanded states = 18
+> [  0.000000] (0:maestro@) Visited states = 36
+> [  0.000000] (0:maestro@) Executed transitions = 32
index b1acb0b..c6be682 100644 (file)
@@ -3,7 +3,7 @@
 p Testing a simple master/worker example application handling failures TCP crosstraffic DISABLED
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-platform-failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_failures.xml ${srcdir:=.}/s4u-platform-failures_d.xml --cfg=path:${srcdir} --cfg=network/crosstraffic:0 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --log=surf_cpu.t:verbose
+$ ${bindir:=.}/s4u-platform-failures --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_failures.xml ${srcdir:=.}/s4u-platform-failures_d.xml --cfg=path:${srcdir} --cfg=network/crosstraffic:0 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --log=surf_cpu.t:verbose
 > [  0.000000] (0:maestro@) Cannot launch actor 'worker' on failed host 'Fafard'
 > [  0.000000] (0:maestro@) Deployment includes some initially turned off Hosts ... nevermind.
 > [  0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
@@ -108,7 +108,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/s4u-platform-failures$EXEEXT --log=xbt_cfg.thres:c
 p Testing a simple master/worker example application handling failures. TCP crosstraffic ENABLED
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-platform-failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_failures.xml ${srcdir:=.}/s4u-platform-failures_d.xml --cfg=path:${srcdir} "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --log=surf_cpu.t:verbose
+$ ${bindir:=.}/s4u-platform-failures --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_failures.xml ${srcdir:=.}/s4u-platform-failures_d.xml --cfg=path:${srcdir} "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --log=surf_cpu.t:verbose
 > [  0.000000] (0:maestro@) Cannot launch actor 'worker' on failed host 'Fafard'
 > [  0.000000] (0:maestro@) Deployment includes some initially turned off Hosts ... nevermind.
 > [  0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
index 11b0d00..1d27cf5 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-platform-profile ${platfdir}/small_platform_profile.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-platform-profile ${platfdir}/small_platform_profile.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:watcher@Tremblay) Fafard: 25Gflops, Jupiter:  12Gflops, Link1: (1000.00MB/s 10ms), Link2: (1000.00MB/s 10ms)
 > [  1.000000] (1:watcher@Tremblay) Fafard: 25Gflops, Jupiter:  12Gflops, Link1: (1000.00MB/s 3ms), Link2: (1000.00MB/s 10ms)
 > [  2.000000] (1:watcher@Tremblay) Fafard: 25Gflops, Jupiter:  25Gflops, Link1: (2000.00MB/s 3ms), Link2: (1000.00MB/s 10ms)
index b3f7e54..9a93d11 100644 (file)
@@ -3,7 +3,7 @@
 p Testing a S4U application with properties in the XML for Hosts, Links and Actors
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-platform-properties$EXEEXT ${platfdir}/prop.xml s4u-platform-properties_d.xml  "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-platform-properties ${platfdir}/prop.xml s4u-platform-properties_d.xml  "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) There are 7 hosts in the environment
 > [  0.000000] (0:maestro@) Host 'host1' runs at 1000000000 flops/s
 > [  0.000000] (0:maestro@) Host 'host2' runs at 1000000000 flops/s
index f10e2f0..0e7319b 100644 (file)
@@ -2,7 +2,7 @@
 
 p This tests the HostLoad plugin (this allows the user to get the current load of a host and the computed flops)
 
-$ ${bindir:=.}/s4u-plugin-hostload$EXEEXT ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-plugin-hostload ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:load_test@MyHost1) Initial peak speed: 1E+08 flop/s; number of flops computed so far: 0E+00 (should be 0) and current average load: 0.00000 (should be 0)
 > [  0.000000] (1:load_test@MyHost1) Sleep for 10 seconds
 > [ 10.000000] (1:load_test@MyHost1) Done sleeping 10.00s; peak speed: 1E+08 flop/s; number of flops computed so far: 0E+00 (nothing should have changed)
index 7cdeeab..8dc83c8 100644 (file)
@@ -1,4 +1,4 @@
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-routing-get-clusters$EXEEXT ${platfdir}/cluster_multi.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-routing-get-clusters ${platfdir}/cluster_multi.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
 > [  0.000000] (maestro@) simple
 > [  0.000000] (maestro@)    node-0.1core.org
 > [  0.000000] (maestro@)    node-1.1core.org
@@ -27,7 +27,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/s4u-routing-get-clusters$EXEEXT ${platfdir}/cluste
 > [  0.000000] (maestro@)    node-6.4cores.org
 > [  0.000000] (maestro@)    node-7.4cores.org
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-routing-get-clusters$EXEEXT ${platfdir}/cluster_dragonfly.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
+$ ${bindir:=.}/s4u-routing-get-clusters ${platfdir}/cluster_dragonfly.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
 > [  0.000000] (maestro@) bob_cluster
 > [  0.000000] (maestro@)    node-0.simgrid.org
 > [  0.000000] (maestro@)    node-1.simgrid.org
index 56dd082..a1e7709 100644 (file)
@@ -1,18 +1,18 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-synchro-barrier 1
+$ ${bindir:=.}/s4u-synchro-barrier 1
 > [Tremblay:master:(1) 0.000000] [s4u_test/INFO] Spawning 0 workers
 > [Tremblay:master:(1) 0.000000] [s4u_test/INFO] Waiting on the barrier
 > [Tremblay:master:(1) 0.000000] [s4u_test/INFO] Bye
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-synchro-barrier 2
+$ ${bindir:=.}/s4u-synchro-barrier 2
 > [Tremblay:master:(1) 0.000000] [s4u_test/INFO] Spawning 1 workers
 > [Jupiter:worker:(2) 0.000000] [s4u_test/INFO] Waiting on the barrier
 > [Tremblay:master:(1) 0.000000] [s4u_test/INFO] Waiting on the barrier
 > [Tremblay:master:(1) 0.000000] [s4u_test/INFO] Bye
 > [Jupiter:worker:(2) 0.000000] [s4u_test/INFO] Bye
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-synchro-barrier 3
+$ ${bindir:=.}/s4u-synchro-barrier 3
 > [Tremblay:master:(1) 0.000000] [s4u_test/INFO] Spawning 2 workers
 > [Jupiter:worker:(2) 0.000000] [s4u_test/INFO] Waiting on the barrier
 > [Jupiter:worker:(3) 0.000000] [s4u_test/INFO] Waiting on the barrier
@@ -21,7 +21,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/s4u-synchro-barrier 3
 > [Jupiter:worker:(2) 0.000000] [s4u_test/INFO] Bye
 > [Jupiter:worker:(3) 0.000000] [s4u_test/INFO] Bye
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-synchro-barrier 10
+$ ${bindir:=.}/s4u-synchro-barrier 10
 > [Tremblay:master:(1) 0.000000] [s4u_test/INFO] Spawning 9 workers
 > [Jupiter:worker:(2) 0.000000] [s4u_test/INFO] Waiting on the barrier
 > [Jupiter:worker:(3) 0.000000] [s4u_test/INFO] Waiting on the barrier
index 94bf0ec..4d1c5e9 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-synchro-mutex
+$ ${bindir:=.}/s4u-synchro-mutex
 > [Jupiter:worker:(2) 0.000000] [s4u_test/INFO] Hello s4u, I'm ready to compute after a lock_guard
 > [Jupiter:worker:(2) 0.000000] [s4u_test/INFO] I'm done, good bye
 > [Tremblay:worker:(3) 0.000000] [s4u_test/INFO] Hello s4u, I'm ready to compute after a regular lock
index d740170..ea805b1 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-synchro-semaphore
+$ ${bindir:=.}/s4u-synchro-semaphore
 > [Tremblay:producer:(1) 0.000000] [s4u_test/INFO] Pushing 'one'
 > [Jupiter:consumer:(2) 0.000000] [s4u_test/INFO] Receiving 'one'
 > [Tremblay:producer:(1) 0.000000] [s4u_test/INFO] Pushing 'two'
index b4a9ed0..9a50297 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env tesh
 
 p Tracing platform only
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-trace-platform$EXEEXT --cfg=tracing:yes --cfg=tracing/filename:trace_platform.trace --cfg=tracing/categorized:yes ${platfdir}/small_platform.xml
+$ ${bindir:=.}/s4u-trace-platform --cfg=tracing:yes --cfg=tracing/filename:trace_platform.trace --cfg=tracing/categorized:yes ${platfdir}/small_platform.xml
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'trace_platform.trace'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
index dc392a2..e6231df 100644 (file)
@@ -6,6 +6,6 @@ p Test SMPI with call-location tracing. This means that the binary must have
 p already been compiled with the -trace-call-location switch.
 $ ${bindir:=.}/../../../smpi_script/bin/smpirun -trace -trace-file ${bindir:=.}/smpi_trace.trace -hostfile ${srcdir:=.}/hostfile -platform ${platfdir}/small_platform.xml --cfg=smpi/trace-call-location:1 -np 3 ${bindir:=.}/smpi_trace_call_location --cfg=smpi/host-speed:1 --log=smpi_kernel.thres:warning --log=xbt_cfg.thres:warning
 
-$ grep --quiet "12 0.* 2 1 7 .*trace_call_location\.c\" 14$" ${bindir:=.}/smpi_trace.trace 
+$ grep -q "12 0.* 2 1 7 .*trace_call_location\.c\" 14$" ${bindir:=.}/smpi_trace.trace 
 
 $ rm -f ${bindir:=.}/smpi_trace.trace 
index d82a019..467dd88 100644 (file)
@@ -39,9 +39,11 @@ class XBT_PUBLIC Comm : public Activity {
   Comm() : Activity() {}
 
 public:
+#ifndef DOXYGEN
   friend XBT_PUBLIC void intrusive_ptr_release(Comm* c);
   friend XBT_PUBLIC void intrusive_ptr_add_ref(Comm* c);
   friend Mailbox; // Factory of comms
+#endif
 
   virtual ~Comm();
 
index 5aed692..ecfa6ce 100644 (file)
@@ -37,12 +37,12 @@ public:
 #ifndef DOXYGEN
   Exec(Exec const&) = delete;
   Exec& operator=(Exec const&) = delete;
-#endif
 
   friend ExecSeq;
   friend ExecPar;
   friend XBT_PUBLIC void intrusive_ptr_release(Exec* e);
   friend XBT_PUBLIC void intrusive_ptr_add_ref(Exec* e);
+#endif
   static xbt::signal<void(Actor const&)> on_start;
   static xbt::signal<void(Actor const&)> on_completion;
 
index 8ac6040..50cf48d 100644 (file)
@@ -34,9 +34,11 @@ private:
   explicit Io(sg_storage_t storage, sg_size_t size, OpType type);
 
 public:
+#ifndef DOXYGEN
   friend XBT_PUBLIC void intrusive_ptr_release(simgrid::s4u::Io* i);
   friend XBT_PUBLIC void intrusive_ptr_add_ref(simgrid::s4u::Io* i);
   friend Storage; // Factory of IOs
+#endif
 
   ~Io() = default;
 
index b955658..54b6f87 100644 (file)
@@ -13,7 +13,7 @@ sonar.sources=src,examples,include,teshsuite
 
 
 # Disable some rules on some files
-sonar.issue.ignore.multicriteria=j1,j2,j3,jni1,jni2,c1,c2a,c2b,c3,c4a,c4b,c5a,c5b,c6a,c6b,c7,c8,c9,c10,f1
+sonar.issue.ignore.multicriteria=j1,j2,j3,jni1,jni2,c1,c2a,c2b,c3,c4a,c4b,c5a,c5b,c6a,c6b,c7,c8,c9,c10,f1,p1
 
 # The Object.finalize() method should not be overriden
 # But we need to clean the native memory with JNI
@@ -106,6 +106,11 @@ sonar.issue.ignore.multicriteria.c10.resourceKey=teshsuite/simdag/**/*.cpp
 sonar.issue.ignore.multicriteria.f1.ruleKey=cpp:S3630
 sonar.issue.ignore.multicriteria.f1.resourceKey=src/smpi/bindings/smpi_f77*.cpp
 
+# In Python, Using command line arguments is security-sensitive
+# But we are cautionous with it
+sonar.issue.ignore.multicriteria.p1.ruleKey=python:S4823
+sonar.issue.ignore.multicriteria.p1.resourceKey=**/*.py
+
 # Exclude some files from the analysis:
 #  - our unit tests
 #  - the tests that we borrowed elsewhere (MPICH and ISP)
index 7804e9f..d7808f4 100644 (file)
@@ -14,7 +14,7 @@ public class VM extends Host {
        private int coreAmount = 1;
 
        /**
-        * Create a `basic' VM : 1 core and 1GB of RAM.
+        * Create a `basic` VM : 1 core and 1GB of RAM.
         * @param host Host node
         * @param name name of the machine
         */     
index 2d6a04b..8866abb 100644 (file)
@@ -163,9 +163,9 @@ static void MC_report_crash(int status)
   else
     XBT_INFO("No core dump was generated by the system.");
   XBT_INFO("Counter-example execution trace:");
-  simgrid::mc::dumpRecordPath();
   for (auto const& s : mc_model_checker->getChecker()->getTextualTrace())
-    XBT_INFO("%s", s.c_str());
+    XBT_INFO("  %s", s.c_str());
+  simgrid::mc::dumpRecordPath();
   simgrid::mc::session->logState();
   XBT_INFO("Stack trace:");
   mc_model_checker->process().dumpStack();
@@ -177,9 +177,9 @@ static void MC_report_assertion_error()
   XBT_INFO("*** PROPERTY NOT VALID ***");
   XBT_INFO("**************************");
   XBT_INFO("Counter-example execution trace:");
-  simgrid::mc::dumpRecordPath();
   for (auto const& s : mc_model_checker->getChecker()->getTextualTrace())
-    XBT_INFO("%s", s.c_str());
+    XBT_INFO("  %s", s.c_str());
+  simgrid::mc::dumpRecordPath();
   simgrid::mc::session->logState();
 }
 
index 85bf68f..a17dbb4 100644 (file)
@@ -28,9 +28,7 @@ static int snapshot_compare(simgrid::mc::VisitedState* state1, simgrid::mc::Visi
 {
   simgrid::mc::Snapshot* s1 = state1->system_state.get();
   simgrid::mc::Snapshot* s2 = state2->system_state.get();
-  int num1 = state1->num;
-  int num2 = state2->num;
-  return snapshot_compare(num1, s1, num2, s2);
+  return snapshot_compare(s1, s2);
 }
 
 /** @brief Save the current state */
index 5875f80..cd49a87 100644 (file)
@@ -100,9 +100,7 @@ int LivenessChecker::compare(simgrid::mc::VisitedPair* state1, simgrid::mc::Visi
 {
   simgrid::mc::Snapshot* s1 = state1->graph_state->system_state.get();
   simgrid::mc::Snapshot* s2 = state2->graph_state->system_state.get();
-  int num1 = state1->num;
-  int num2 = state2->num;
-  return simgrid::mc::snapshot_compare(num1, s1, num2, s2);
+  return simgrid::mc::snapshot_compare(s1, s2);
 }
 
 std::shared_ptr<VisitedPair> LivenessChecker::insertAcceptancePair(simgrid::mc::Pair* pair)
@@ -275,12 +273,12 @@ void LivenessChecker::showAcceptanceCycle(std::size_t depth)
   XBT_INFO("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");
   XBT_INFO("|             ACCEPTANCE CYCLE            |");
   XBT_INFO("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");
-  XBT_INFO("Counter-example that violates formula :");
-  simgrid::mc::dumpRecordPath();
+  XBT_INFO("Counter-example that violates formula:");
   for (auto const& s : this->getTextualTrace())
-    XBT_INFO("%s", s.c_str());
+    XBT_INFO("  %s", s.c_str());
+  simgrid::mc::dumpRecordPath();
   simgrid::mc::session->logState();
-  XBT_INFO("Counter-example depth : %zu", depth);
+  XBT_INFO("Counter-example depth: %zu", depth);
 }
 
 std::vector<std::string> LivenessChecker::getTextualTrace() // override
index 079f3fe..faca5d2 100644 (file)
@@ -34,9 +34,7 @@ static int snapshot_compare(simgrid::mc::State* state1, simgrid::mc::State* stat
 {
   simgrid::mc::Snapshot* s1 = state1->system_state.get();
   simgrid::mc::Snapshot* s2 = state2->system_state.get();
-  int num1 = state1->num;
-  int num2 = state2->num;
-  return snapshot_compare(num1, s1, num2, s2);
+  return snapshot_compare(s1, s2);
 }
 
 void SafetyChecker::checkNonTermination(simgrid::mc::State* current_state)
@@ -49,7 +47,8 @@ void SafetyChecker::checkNonTermination(simgrid::mc::State* current_state)
       XBT_INFO("******************************************");
       XBT_INFO("Counter-example execution trace:");
       for (auto const& s : mc_model_checker->getChecker()->getTextualTrace())
-        XBT_INFO("%s", s.c_str());
+        XBT_INFO("  %s", s.c_str());
+      simgrid::mc::dumpRecordPath();
       simgrid::mc::session->logState();
 
       throw simgrid::mc::TerminationError();
index 7149a71..946b92a 100644 (file)
@@ -301,8 +301,7 @@ int StateComparator::initHeapInformation(xbt_mheap_t heap1, xbt_mheap_t heap2,
 }
 
 // TODO, have a robust way to find it in O(1)
-static inline
-mc_mem_region_t MC_get_heap_region(simgrid::mc::Snapshot* snapshot)
+static inline RegionSnapshot* MC_get_heap_region(Snapshot* snapshot)
 {
   for (auto const& region : snapshot->snapshot_regions)
     if (region->region_type() == simgrid::mc::RegionType::Heap)
@@ -317,28 +316,19 @@ int mmalloc_compare_heap(
   simgrid::mc::RemoteClient* process = &mc_model_checker->process();
 
   /* Start comparison */
-  size_t i1;
-  size_t i2;
-  size_t j1;
-  size_t j2;
-  size_t k;
-  void* addr_block1;
-  void* addr_block2;
-  void* addr_frag1;
-  void* addr_frag2;
   int nb_diff1 = 0;
   int nb_diff2 = 0;
-  int equal;
+  bool equal;
 
   /* Check busy blocks */
-  i1 = 1;
+  size_t i1 = 1;
 
   malloc_info heapinfo_temp1;
   malloc_info heapinfo_temp2;
   malloc_info heapinfo_temp2b;
 
-  mc_mem_region_t heap_region1 = MC_get_heap_region(snapshot1);
-  mc_mem_region_t heap_region2 = MC_get_heap_region(snapshot2);
+  simgrid::mc::RegionSnapshot* heap_region1 = MC_get_heap_region(snapshot1);
+  simgrid::mc::RegionSnapshot* heap_region2 = MC_get_heap_region(snapshot2);
 
   // This is the address of std_heap->heapinfo in the application process:
   void* heapinfo_address = &((xbt_mheap_t) process->heap_address)->heapinfo;
@@ -364,14 +354,14 @@ int mmalloc_compare_heap(
       abort();
     }
 
-    addr_block1 = ((void*)(((ADDR2UINT(i1)) - 1) * BLOCKSIZE + (char*)state.std_heap_copy.heapbase));
+    void* addr_block1 = ((void*)(((ADDR2UINT(i1)) - 1) * BLOCKSIZE + (char*)state.std_heap_copy.heapbase));
 
     if (heapinfo1->type == MMALLOC_TYPE_UNFRAGMENTED) {       /* Large block */
 
       if (is_stack(addr_block1)) {
-        for (k = 0; k < heapinfo1->busy_block.size; k++)
+        for (size_t k = 0; k < heapinfo1->busy_block.size; k++)
           state.equals_to1_(i1 + k, 0) = HeapArea(i1, -1);
-        for (k = 0; k < heapinfo2->busy_block.size; k++)
+        for (size_t k = 0; k < heapinfo2->busy_block.size; k++)
           state.equals_to2_(i1 + k, 0) = HeapArea(i1, -1);
         i1 += heapinfo1->busy_block.size;
         continue;
@@ -382,27 +372,27 @@ int mmalloc_compare_heap(
         continue;
       }
 
-      i2          = 1;
-      equal       = 0;
+      size_t i2 = 1;
+      equal     = false;
 
       /* Try first to associate to same block in the other heap */
       if (heapinfo2->type == heapinfo1->type && state.equals_to2_(i1, 0).valid_ == 0) {
-        addr_block2 = (ADDR2UINT(i1) - 1) * BLOCKSIZE + (char*)state.std_heap_copy.heapbase;
+        void* addr_block2 = (ADDR2UINT(i1) - 1) * BLOCKSIZE + (char*)state.std_heap_copy.heapbase;
         int res_compare = compare_heap_area(state, simgrid::mc::ProcessIndexMissing, addr_block1, addr_block2,
                                             snapshot1, snapshot2, nullptr, nullptr, 0);
         if (res_compare != 1) {
-          for (k = 1; k < heapinfo2->busy_block.size; k++)
+          for (size_t k = 1; k < heapinfo2->busy_block.size; k++)
             state.equals_to2_(i1 + k, 0) = HeapArea(i1, -1);
-          for (k = 1; k < heapinfo1->busy_block.size; k++)
+          for (size_t k = 1; k < heapinfo1->busy_block.size; k++)
             state.equals_to1_(i1 + k, 0) = HeapArea(i1, -1);
-          equal = 1;
+          equal = true;
           i1 += heapinfo1->busy_block.size;
         }
       }
 
       while (i2 < state.heaplimit && not equal) {
 
-        addr_block2 = (ADDR2UINT(i2) - 1) * BLOCKSIZE + (char*)state.std_heap_copy.heapbase;
+        void* addr_block2 = (ADDR2UINT(i2) - 1) * BLOCKSIZE + (char*)state.std_heap_copy.heapbase;
 
         if (i2 == i1) {
           i2++;
@@ -425,11 +415,11 @@ int mmalloc_compare_heap(
                                             snapshot1, snapshot2, nullptr, nullptr, 0);
 
         if (res_compare != 1) {
-          for (k = 1; k < heapinfo2b->busy_block.size; k++)
+          for (size_t k = 1; k < heapinfo2b->busy_block.size; k++)
             state.equals_to2_(i2 + k, 0) = HeapArea(i1, -1);
-          for (k = 1; k < heapinfo1->busy_block.size; k++)
+          for (size_t k = 1; k < heapinfo1->busy_block.size; k++)
             state.equals_to1_(i1 + k, 0) = HeapArea(i2, -1);
-          equal = 1;
+          equal = true;
           i1 += heapinfo1->busy_block.size;
         }
 
@@ -444,7 +434,7 @@ int mmalloc_compare_heap(
 
     } else {                    /* Fragmented block */
 
-      for (j1 = 0; j1 < (size_t) (BLOCKSIZE >> heapinfo1->type); j1++) {
+      for (size_t j1 = 0; j1 < (size_t)(BLOCKSIZE >> heapinfo1->type); j1++) {
 
         if (heapinfo1->busy_frag.frag_size[j1] == -1) /* Free fragment_ */
           continue;
@@ -452,22 +442,19 @@ int mmalloc_compare_heap(
         if (state.equals_to1_(i1, j1).valid_)
           continue;
 
-        addr_frag1 = (void*)((char*)addr_block1 + (j1 << heapinfo1->type));
+        void* addr_frag1 = (void*)((char*)addr_block1 + (j1 << heapinfo1->type));
 
-        i2 = 1;
-        equal = 0;
+        size_t i2 = 1;
+        equal     = false;
 
         /* Try first to associate to same fragment_ in the other heap */
         if (heapinfo2->type == heapinfo1->type && not state.equals_to2_(i1, j1).valid_) {
-          addr_block2 = (ADDR2UINT(i1) - 1) * BLOCKSIZE +
-                         (char *) state.std_heap_copy.heapbase;
-          addr_frag2 =
-              (void *) ((char *) addr_block2 +
-                        (j1 << heapinfo2->type));
+          void* addr_block2 = (ADDR2UINT(i1) - 1) * BLOCKSIZE + (char*)state.std_heap_copy.heapbase;
+          void* addr_frag2  = (void*)((char*)addr_block2 + (j1 << heapinfo2->type));
           int res_compare = compare_heap_area(state, simgrid::mc::ProcessIndexMissing, addr_frag1, addr_frag2,
                                               snapshot1, snapshot2, nullptr, nullptr, 0);
           if (res_compare != 1)
-            equal = 1;
+            equal = true;
         }
 
         while (i2 < state.heaplimit && not equal) {
@@ -492,8 +479,7 @@ int mmalloc_compare_heap(
             abort();
           }
 
-          for (j2 = 0; j2 < (size_t) (BLOCKSIZE >> heapinfo2b->type);
-               j2++) {
+          for (size_t j2 = 0; j2 < (size_t)(BLOCKSIZE >> heapinfo2b->type); j2++) {
 
             if (i2 == i1 && j2 == j1)
               continue;
@@ -501,13 +487,13 @@ int mmalloc_compare_heap(
             if (state.equals_to2_(i2, j2).valid_)
               continue;
 
-            addr_block2 = (ADDR2UINT(i2) - 1) * BLOCKSIZE + (char*)state.std_heap_copy.heapbase;
-            addr_frag2  = (void*)((char*)addr_block2 + (j2 << heapinfo2b->type));
+            void* addr_block2 = (ADDR2UINT(i2) - 1) * BLOCKSIZE + (char*)state.std_heap_copy.heapbase;
+            void* addr_frag2  = (void*)((char*)addr_block2 + (j2 << heapinfo2b->type));
 
             int res_compare = compare_heap_area(state, simgrid::mc::ProcessIndexMissing, addr_frag1, addr_frag2,
                                                 snapshot2, snapshot2, nullptr, nullptr, 0);
             if (res_compare != 1) {
-              equal = 1;
+              equal = true;
               break;
             }
           }
@@ -529,10 +515,7 @@ int mmalloc_compare_heap(
   }
 
   /* All blocks/fragments are equal to another block/fragment_ ? */
-  size_t i = 1;
-  size_t j = 0;
-
-  for(i = 1; i < state.heaplimit; i++) {
+  for (size_t i = 1; i < state.heaplimit; i++) {
     const malloc_info* heapinfo1 = (const malloc_info*) MC_region_read(
       heap_region1, &heapinfo_temp1, &heapinfos1[i], sizeof(malloc_info));
 
@@ -544,7 +527,7 @@ int mmalloc_compare_heap(
 
     if (heapinfo1->type <= 0)
       continue;
-    for (j = 0; j < (size_t) (BLOCKSIZE >> heapinfo1->type); j++)
+    for (size_t j = 0; j < (size_t)(BLOCKSIZE >> heapinfo1->type); j++)
       if (i1 == state.heaplimit && heapinfo1->busy_frag.frag_size[j] > 0 && not state.equals_to1_(i, j).valid_) {
         XBT_DEBUG("Block %zu, Fragment %zu not found (size used = %zd)", i, j, heapinfo1->busy_frag.frag_size[j]);
         nb_diff1++;
@@ -554,7 +537,7 @@ int mmalloc_compare_heap(
   if (i1 == state.heaplimit)
     XBT_DEBUG("Number of blocks/fragments not found in heap1: %d", nb_diff1);
 
-  for (i=1; i < state.heaplimit; i++) {
+  for (size_t i = 1; i < state.heaplimit; i++) {
     const malloc_info* heapinfo2 = (const malloc_info*) MC_region_read(
       heap_region2, &heapinfo_temp2, &heapinfos2[i], sizeof(malloc_info));
     if (heapinfo2->type == MMALLOC_TYPE_UNFRAGMENTED && i1 == state.heaplimit && heapinfo2->busy_block.busy_size > 0 &&
@@ -567,7 +550,7 @@ int mmalloc_compare_heap(
     if (heapinfo2->type <= 0)
       continue;
 
-    for (j = 0; j < (size_t) (BLOCKSIZE >> heapinfo2->type); j++)
+    for (size_t j = 0; j < (size_t)(BLOCKSIZE >> heapinfo2->type); j++)
       if (i1 == state.heaplimit && heapinfo2->busy_frag.frag_size[j] > 0 && not state.equals_to2_(i, j).valid_) {
         XBT_DEBUG("Block %zu, Fragment %zu not found (size used = %zd)",
           i, j, heapinfo2->busy_frag.frag_size[j]);
@@ -602,8 +585,8 @@ static int compare_heap_area_without_type(
   int check_ignore)
 {
   simgrid::mc::RemoteClient* process = &mc_model_checker->process();
-  mc_mem_region_t heap_region1 = MC_get_heap_region(snapshot1);
-  mc_mem_region_t heap_region2 = MC_get_heap_region(snapshot2);
+  simgrid::mc::RegionSnapshot* heap_region1 = MC_get_heap_region(snapshot1);
+  simgrid::mc::RegionSnapshot* heap_region2 = MC_get_heap_region(snapshot2);
 
   for (int i = 0; i < size; ) {
 
@@ -712,8 +695,8 @@ static int compare_heap_area_with_type(
     const void* addr_pointed1;
     const void* addr_pointed2;
 
-    mc_mem_region_t heap_region1 = MC_get_heap_region(snapshot1);
-    mc_mem_region_t heap_region2 = MC_get_heap_region(snapshot2);
+    simgrid::mc::RegionSnapshot* heap_region1 = MC_get_heap_region(snapshot1);
+    simgrid::mc::RegionSnapshot* heap_region2 = MC_get_heap_region(snapshot2);
 
     switch (type->type) {
       case DW_TAG_unspecified_type:
@@ -1003,8 +986,8 @@ int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
 
   }
 
-  mc_mem_region_t heap_region1 = MC_get_heap_region(snapshot1);
-  mc_mem_region_t heap_region2 = MC_get_heap_region(snapshot2);
+  simgrid::mc::RegionSnapshot* heap_region1 = MC_get_heap_region(snapshot1);
+  simgrid::mc::RegionSnapshot* heap_region2 = MC_get_heap_region(snapshot2);
 
   const malloc_info* heapinfo1 = (const malloc_info*) MC_region_read(
     heap_region1, &heapinfo_temp1, &heapinfos1[block1], sizeof(malloc_info));
@@ -1221,11 +1204,10 @@ int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
 /************************** Snapshot comparison *******************************/
 /******************************************************************************/
 
-static int compare_areas_with_type(simgrid::mc::StateComparator& state,
-                                   int process_index,
-                                   void* real_area1, simgrid::mc::Snapshot* snapshot1, mc_mem_region_t region1,
-                                   void* real_area2, simgrid::mc::Snapshot* snapshot2, mc_mem_region_t region2,
-                                   simgrid::mc::Type* type, int pointer_level)
+static int compare_areas_with_type(simgrid::mc::StateComparator& state, int process_index, void* real_area1,
+                                   simgrid::mc::Snapshot* snapshot1, simgrid::mc::RegionSnapshot* region1,
+                                   void* real_area2, simgrid::mc::Snapshot* snapshot2,
+                                   simgrid::mc::RegionSnapshot* region2, simgrid::mc::Type* type, int pointer_level)
 {
   simgrid::mc::RemoteClient* process = &mc_model_checker->process();
 
@@ -1339,8 +1321,8 @@ static int compare_areas_with_type(simgrid::mc::StateComparator& state,
         for (simgrid::mc::Member& member : type->members) {
           void* member1 = simgrid::dwarf::resolve_member(real_area1, type, &member, snapshot1, process_index);
           void* member2 = simgrid::dwarf::resolve_member(real_area2, type, &member, snapshot2, process_index);
-          mc_mem_region_t subregion1 = mc_get_region_hinted(member1, snapshot1, process_index, region1);
-          mc_mem_region_t subregion2 = mc_get_region_hinted(member2, snapshot2, process_index, region2);
+          simgrid::mc::RegionSnapshot* subregion1 = mc_get_region_hinted(member1, snapshot1, process_index, region1);
+          simgrid::mc::RegionSnapshot* subregion2 = mc_get_region_hinted(member2, snapshot2, process_index, region2);
           res = compare_areas_with_type(state, process_index, member1, snapshot1, subregion1, member2, snapshot2,
                                         subregion2, member.type, pointer_level);
           if (res == 1)
@@ -1358,12 +1340,9 @@ static int compare_areas_with_type(simgrid::mc::StateComparator& state,
   } while (true);
 }
 
-static int compare_global_variables(
-  simgrid::mc::StateComparator& state,
-  simgrid::mc::ObjectInformation* object_info,
-  int process_index,
-  mc_mem_region_t r1, mc_mem_region_t r2,
-  simgrid::mc::Snapshot* snapshot1, simgrid::mc::Snapshot* snapshot2)
+static int compare_global_variables(simgrid::mc::StateComparator& state, simgrid::mc::ObjectInformation* object_info,
+                                    int process_index, simgrid::mc::RegionSnapshot* r1, simgrid::mc::RegionSnapshot* r2,
+                                    simgrid::mc::Snapshot* snapshot1, simgrid::mc::Snapshot* snapshot2)
 {
   xbt_assert(r1 && r2, "Missing region.");
 
@@ -1475,16 +1454,15 @@ namespace mc {
 
 static std::unique_ptr<simgrid::mc::StateComparator> state_comparator;
 
-int snapshot_compare(int num1, simgrid::mc::Snapshot* s1, int num2, simgrid::mc::Snapshot* s2)
+int snapshot_compare(Snapshot* s1, Snapshot* s2)
 {
   // TODO, make this a field of ModelChecker or something similar
-
   if (state_comparator == nullptr)
     state_comparator.reset(new StateComparator());
   else
     state_comparator->clear();
 
-  simgrid::mc::RemoteClient* process = &mc_model_checker->process();
+  RemoteClient* process = &mc_model_checker->process();
 
   int errors = 0;
 
@@ -1492,17 +1470,17 @@ int snapshot_compare(int num1, simgrid::mc::Snapshot* s1, int num2, simgrid::mc:
   if (_sg_mc_hash) {
     hash_result = (s1->hash != s2->hash);
     if (hash_result) {
-      XBT_VERB("(%d - %d) Different hash: 0x%" PRIx64 "--0x%" PRIx64, num1, num2, s1->hash, s2->hash);
+      XBT_VERB("(%d - %d) Different hash: 0x%" PRIx64 "--0x%" PRIx64, s1->num_state, s2->num_state, s1->hash, s2->hash);
 #ifndef MC_DEBUG
       return 1;
 #endif
     } else
-      XBT_VERB("(%d - %d) Same hash: 0x%" PRIx64, num1, num2, s1->hash);
+      XBT_VERB("(%d - %d) Same hash: 0x%" PRIx64, s1->num_state, s2->num_state, s1->hash);
   }
 
   /* Compare enabled processes */
   if (s1->enabled_processes != s2->enabled_processes) {
-    XBT_VERB("(%d - %d) Different amount of enabled processes", num1, num2);
+    XBT_VERB("(%d - %d) Different amount of enabled processes", s1->num_state, s2->num_state);
     return 1;
   }
 
@@ -1513,12 +1491,14 @@ int snapshot_compare(int num1, simgrid::mc::Snapshot* s1, int num2, simgrid::mc:
     size_t size_used2 = s2->stack_sizes[i];
     if (size_used1 != size_used2) {
 #ifdef MC_DEBUG
-      XBT_DEBUG("(%d - %d) Different size used in stacks: %zu - %zu", num1, num2, size_used1, size_used2);
+      XBT_DEBUG("(%d - %d) Different size used in stacks: %zu - %zu", s1->num_state, s2->num_state, size_used1,
+                size_used2);
       errors++;
       is_diff = 1;
 #else
 #ifdef MC_VERBOSE
-      XBT_VERB("(%d - %d) Different size used in stacks: %zu - %zu", num1, num2, size_used1, size_used2);
+      XBT_VERB("(%d - %d) Different size used in stacks: %zu - %zu", s1->num_state, s2->num_state, size_used1,
+               size_used2);
 #endif
       return 1;
 #endif
@@ -1540,11 +1520,11 @@ int snapshot_compare(int num1, simgrid::mc::Snapshot* s1, int num2, simgrid::mc:
 
   if (res_init == -1) {
 #ifdef MC_DEBUG
-    XBT_DEBUG("(%d - %d) Different heap information", num1, num2);
+    XBT_DEBUG("(%d - %d) Different heap information", num1, nus1->num_state, s2->num_statem2);
     errors++;
 #else
 #ifdef MC_VERBOSE
-    XBT_VERB("(%d - %d) Different heap information", num1, num2);
+    XBT_VERB("(%d - %d) Different heap information", s1->num_state, s2->num_state);
 #endif
 
     return 1;
@@ -1559,8 +1539,8 @@ int snapshot_compare(int num1, simgrid::mc::Snapshot* s1, int num2, simgrid::mc:
 
     if (stack1->process_index != stack2->process_index) {
       diff_local = 1;
-      XBT_DEBUG("(%d - %d) Stacks with different process index (%i vs %i)", num1, num2,
-        stack1->process_index, stack2->process_index);
+      XBT_DEBUG("(%d - %d) Stacks with different process index (%i vs %i)", s1->num_state, s2->num_state,
+                stack1->process_index, stack2->process_index);
     }
     else diff_local = compare_local_variables(*state_comparator,
       stack1->process_index, s1, s2, stack1, stack2);
@@ -1572,7 +1552,7 @@ int snapshot_compare(int num1, simgrid::mc::Snapshot* s1, int num2, simgrid::mc:
 #else
 
 #ifdef MC_VERBOSE
-      XBT_VERB("(%d - %d) Different local variables between stacks %u", num1, num2, cursor + 1);
+      XBT_VERB("(%d - %d) Different local variables between stacks %u", s1->num_state, s2->num_state, cursor + 1);
 #endif
 
       return 1;
@@ -1585,11 +1565,11 @@ int snapshot_compare(int num1, simgrid::mc::Snapshot* s1, int num2, simgrid::mc:
   xbt_assert(regions_count == s2->snapshot_regions.size());
 
   for (size_t k = 0; k != regions_count; ++k) {
-    mc_mem_region_t region1 = s1->snapshot_regions[k].get();
-    mc_mem_region_t region2 = s2->snapshot_regions[k].get();
+    RegionSnapshot* region1 = s1->snapshot_regions[k].get();
+    RegionSnapshot* region2 = s2->snapshot_regions[k].get();
 
     // Preconditions:
-    if (region1->region_type() != simgrid::mc::RegionType::Data)
+    if (region1->region_type() != RegionType::Data)
       continue;
 
     xbt_assert(region1->region_type() == region2->region_type());
@@ -1603,13 +1583,11 @@ int snapshot_compare(int num1, simgrid::mc::Snapshot* s1, int num2, simgrid::mc:
                                  region2, s1, s2)) {
 
 #ifdef MC_DEBUG
-      XBT_DEBUG("(%d - %d) Different global variables in %s",
-        num1, num2, name.c_str());
+      XBT_DEBUG("(%d - %d) Different global variables in %s", s1->num_state, s2->num_state, name.c_str());
       errors++;
 #else
 #ifdef MC_VERBOSE
-      XBT_VERB("(%d - %d) Different global variables in %s",
-        num1, num2, name.c_str());
+      XBT_VERB("(%d - %d) Different global variables in %s", s1->num_state, s2->num_state, name.c_str());
 #endif
 
       return 1;
@@ -1618,15 +1596,15 @@ int snapshot_compare(int num1, simgrid::mc::Snapshot* s1, int num2, simgrid::mc:
   }
 
   /* Compare heap */
-  if (simgrid::mc::mmalloc_compare_heap(*state_comparator, s1, s2) > 0) {
+  if (mmalloc_compare_heap(*state_comparator, s1, s2) > 0) {
 
 #ifdef MC_DEBUG
-    XBT_DEBUG("(%d - %d) Different heap (mmalloc_compare)", num1, num2);
+    XBT_DEBUG("(%d - %d) Different heap (mmalloc_compare)", s1->num_state, s2->num_state);
     errors++;
 #else
 
 #ifdef MC_VERBOSE
-    XBT_VERB("(%d - %d) Different heap (mmalloc_compare)", num1, num2);
+    XBT_VERB("(%d - %d) Different heap (mmalloc_compare)", s1->num_state, s2->num_state);
 #endif
     return 1;
 #endif
@@ -1634,9 +1612,9 @@ int snapshot_compare(int num1, simgrid::mc::Snapshot* s1, int num2, simgrid::mc:
 
 #ifdef MC_VERBOSE
   if (errors || hash_result)
-    XBT_VERB("(%d - %d) Difference found", num1, num2);
+    XBT_VERB("(%d - %d) Difference found", s1->num_state, s2->num_state);
   else
-    XBT_VERB("(%d - %d) No difference found", num1, num2);
+    XBT_VERB("(%d - %d) No difference found", s1->num_state, s2->num_state);
 #endif
 
 #if defined(MC_DEBUG) && defined(MC_VERBOSE)
@@ -1644,7 +1622,7 @@ int snapshot_compare(int num1, simgrid::mc::Snapshot* s1, int num2, simgrid::mc:
     // * false positive SHOULD be avoided.
     // * There MUST not be any false negative.
 
-    XBT_VERB("(%d - %d) State equality hash test is %s %s", num1, num2,
+    XBT_VERB("(%d - %d) State equality hash test is %s %s", s1->num_state, s2->num_state,
              (hash_result != 0) == (errors != 0) ? "true" : "false", not hash_result ? "positive" : "negative");
   }
 #endif
index 0aeee5b..2bfe6b5 100644 (file)
@@ -12,6 +12,7 @@
 #include "src/mc/mc_ignore.hpp"
 #include "src/mc/mc_private.hpp"
 #include "src/mc/mc_record.hpp"
+#include "src/mc/mc_replay.hpp"
 #include "src/mc/remote/Client.hpp"
 #include "src/mc/remote/mc_protocol.h"
 
@@ -29,8 +30,12 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_client_api, mc,
 void MC_assert(int prop)
 {
   xbt_assert(mc_model_checker == nullptr);
-  if (MC_is_active() && not prop)
-    simgrid::mc::Client::get()->reportAssertionFailure();
+  if (not prop) {
+    if (MC_is_active())
+      simgrid::mc::Client::get()->reportAssertionFailure();
+    if (MC_record_replay_is_active())
+      xbt_die("MC assertion failed");
+  }
 }
 
 void MC_cut()
index e9e4f66..b8de285 100644 (file)
@@ -54,8 +54,6 @@ simgrid::config::Flag<bool> _sg_mc_timeout{
 int _sg_do_model_check = 0;
 int _sg_mc_max_visited_states = 0;
 
-simgrid::config::Flag<bool> _sg_do_model_check_record{"model-check/record", "Record the model-checking paths", false};
-
 simgrid::config::Flag<int> _sg_mc_checkpoint{
     "model-check/checkpoint", "Specify the amount of steps between checkpoints during stateful model-checking "
                               "(default: 0 => stateless verification). If value=1, one checkpoint is saved for each "
@@ -66,9 +64,6 @@ simgrid::config::Flag<int> _sg_mc_checkpoint{
 simgrid::config::Flag<bool> _sg_mc_sparse_checkpoint{"model-check/sparse-checkpoint", "Use sparse per-page snapshots.",
                                                      false, [](bool) { _mc_cfg_cb_check("checkpointing value"); }};
 
-simgrid::config::Flag<bool> _sg_mc_ksm{"model-check/ksm", "Kernel same-page merging", false,
-                                       [](bool) { _mc_cfg_cb_check("KSM value"); }};
-
 simgrid::config::Flag<std::string> _sg_mc_property_file{
     "model-check/property", "Name of the file containing the property, as formatted by the ltl2ba program.", "",
     [](const std::string&) { _mc_cfg_cb_check("property"); }};
index 6ee0daf..3d74a3d 100644 (file)
 /********************************** Configuration of MC **************************************/
 extern "C" XBT_PUBLIC int _sg_do_model_check;
 extern XBT_PUBLIC simgrid::config::Flag<std::string> _sg_mc_record_path;
-extern XBT_PRIVATE simgrid::config::Flag<bool> _sg_do_model_check_record;
 extern XBT_PRIVATE simgrid::config::Flag<int> _sg_mc_checkpoint;
 extern XBT_PUBLIC simgrid::config::Flag<bool> _sg_mc_sparse_checkpoint;
-extern XBT_PUBLIC simgrid::config::Flag<bool> _sg_mc_ksm;
 extern XBT_PUBLIC simgrid::config::Flag<std::string> _sg_mc_property_file;
 extern XBT_PUBLIC simgrid::config::Flag<bool> _sg_mc_comms_determinism;
 extern XBT_PUBLIC simgrid::config::Flag<bool> _sg_mc_send_determinism;
index 0a48a28..b2cc82d 100644 (file)
@@ -106,7 +106,8 @@ void MC_show_deadlock()
   XBT_INFO("**************************");
   XBT_INFO("Counter-example execution trace:");
   for (auto const& s : mc_model_checker->getChecker()->getTextualTrace())
-    XBT_INFO("%s", s.c_str());
+    XBT_INFO("  %s", s.c_str());
+  simgrid::mc::dumpRecordPath();
   simgrid::mc::session->logState();
 }
 
index dae7a09..cd920ce 100644 (file)
@@ -13,9 +13,9 @@
 #define XBT_ALWAYS_INLINE inline __attribute__((always_inline))
 #endif
 
-/** Cache the size of a memory page for the current system. */
+/** Size of a memory page for the current system. */
 extern "C" int xbt_pagesize;
-/** Cache the number of bits of addresses inside a given page, log2(xbt_pagesize). */
+/** Number of bits of addresses inside a given page, log2(xbt_pagesize). */
 extern "C" int xbt_pagebits;
 
 namespace simgrid {
@@ -23,7 +23,7 @@ namespace mc {
 // TODO, do not depend on xbt_pagesize/xbt_pagebits but our own chunk size
 namespace mmu {
 
-static int chunkSize()
+static int chunk_size()
 {
   return xbt_pagesize;
 }
@@ -33,7 +33,7 @@ static int chunkSize()
  *  @param size Byte size
  *  @return Number of memory pages
  */
-static XBT_ALWAYS_INLINE std::size_t chunkCount(std::size_t size)
+static XBT_ALWAYS_INLINE std::size_t chunk_count(std::size_t size)
 {
   size_t page_count = size >> xbt_pagebits;
   if (size & (xbt_pagesize - 1))
@@ -47,7 +47,7 @@ static XBT_ALWAYS_INLINE std::pair<std::size_t, std::uintptr_t> split(std::uintp
   return {offset >> xbt_pagebits, offset & (xbt_pagesize - 1)};
 }
 
-/** Merge chunk number and remaining offset info a global offset */
+/** Merge chunk number and remaining offset into a global offset */
 static XBT_ALWAYS_INLINE std::uintptr_t join(std::size_t page, std::uintptr_t offset)
 {
   return ((std::uintptr_t)page << xbt_pagebits) + offset;
@@ -58,7 +58,7 @@ static XBT_ALWAYS_INLINE std::uintptr_t join(std::pair<std::size_t, std::uintptr
   return join(value.first, value.second);
 }
 
-static XBT_ALWAYS_INLINE bool sameChunk(std::uintptr_t a, std::uintptr_t b)
+static XBT_ALWAYS_INLINE bool same_chunk(std::uintptr_t a, std::uintptr_t b)
 {
   return (a >> xbt_pagebits) == (b >> xbt_pagebits);
 }
index 1f6ad5d..d12942f 100644 (file)
@@ -45,7 +45,7 @@ XBT_PRIVATE void find_object_address(std::vector<simgrid::xbt::VmMap> const& map
                                      simgrid::mc::ObjectInformation* result);
 
 XBT_PRIVATE
-int snapshot_compare(int num1, simgrid::mc::Snapshot* s1, int num2, simgrid::mc::Snapshot* s2);
+int snapshot_compare(Snapshot* s1, Snapshot* s2);
 
 // Move is somewhere else (in the LivenessChecker class, in the Session class?):
 extern XBT_PRIVATE xbt_automaton_t property_automaton;
index dd19a66..115695c 100644 (file)
@@ -18,8 +18,7 @@
 #include "src/mc/mc_state.hpp"
 #endif
 
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_record, mc,
-  " Logging specific to MC record/replay facility");
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_record, mc, "Logging specific to MC record/replay facility");
 
 namespace simgrid {
 namespace mc {
@@ -99,10 +98,8 @@ std::string traceToString(simgrid::mc::RecordTrace const& trace)
 
 void dumpRecordPath()
 {
-  if (MC_record_is_active()) {
-    RecordTrace trace = mc_model_checker->getChecker()->getRecordTrace();
-    XBT_INFO("Path = %s", traceToString(trace).c_str());
-  }
+  RecordTrace trace = mc_model_checker->getChecker()->getRecordTrace();
+  XBT_INFO("Path = %s", traceToString(trace).c_str());
 }
 
 #endif
index df5285e..d4ead6f 100644 (file)
@@ -6,9 +6,8 @@
 /** \file mc_record.hpp
  *
  *  This file contains the MC replay/record functionnality.
- *  A MC path may be recorded by using ``-cfg=model-check/record:1`'`.
- *  The path is written in the log output and an be replayed with MC disabled
- *  (even with an non-MC build) with `--cfg=model-check/replay:$replayPath`.
+ *  The recorded path is written in the log output and can be replayed with MC disabled
+ *  (even with an non-MC build) using `--cfg=model-check/replay:$replayPath`.
  *
  *  The same version of Simgrid should be used and the same arguments should be
  *  passed to the application (without the MC specific arguments).
@@ -39,13 +38,6 @@ XBT_PRIVATE void replay(const std::string& trace);
 }
 }
 
-/** Whether the MC record mode is enabled
- *
- *  The behaviour is not changed. The only real difference is that
- *  the path is writtent in the log when an interesting path is found.
- */
-#define MC_record_is_active() _sg_do_model_check_record
-
 // **** Data conversion
 
 #endif
index 1f27dc8..c1ea4b3 100644 (file)
@@ -151,8 +151,7 @@ int MC_smpi_process_count()
   if (mc_model_checker == nullptr)
     return smpi_process_count();
   int res;
-  mc_model_checker->process().read_variable("process_count",
-    &res, sizeof(res));
+  mc_model_checker->process().read_variable("process_count", &res, sizeof(res));
   return res;
 }
 #endif
index ea2445f..f86a2f3 100644 (file)
@@ -22,82 +22,17 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_RegionSnaphot, mc, "Logging specific to regio
 namespace simgrid {
 namespace mc {
 
-static inline const char* to_cstr(RegionType region)
-{
-  switch (region) {
-    case RegionType::Unknown:
-      return "unknown";
-    case RegionType::Heap:
-      return "Heap";
-    case RegionType::Data:
-      return "Data";
-    default:
-      return "?";
-  }
-}
-
-Buffer::Buffer(std::size_t size, Type type) : size_(size), type_(type)
-{
-  switch (type_) {
-    case Type::Malloc:
-      data_ = ::operator new(size_);
-      break;
-    case Type::Mmap:
-      data_ = ::mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_POPULATE, -1, 0);
-      if (data_ == MAP_FAILED) {
-        data_ = nullptr;
-        size_ = 0;
-        type_ = Type::Malloc;
-        throw std::bad_alloc();
-      }
-      break;
-    default:
-      abort();
-  }
-}
-
-void Buffer::clear() noexcept
-{
-  switch (type_) {
-    case Type::Malloc:
-      ::operator delete(data_);
-      break;
-    case Type::Mmap:
-      if (munmap(data_, size_) != 0)
-        abort();
-      break;
-    default:
-      abort();
-  }
-  data_ = nullptr;
-  size_ = 0;
-  type_ = Type::Malloc;
-}
-
 RegionSnapshot dense_region(RegionType region_type, void* start_addr, void* permanent_addr, size_t size)
 {
-  // When KSM support is enables, we allocate memory using mmap:
-  // * we don't want to advise bits of the heap as mergable
-  // * mmap gives data aligned on page boundaries which is merge friendly
-  simgrid::mc::Buffer data;
-  if (_sg_mc_ksm)
-    data = Buffer::mmap(size);
-  else
-    data = Buffer::malloc(size);
+  simgrid::mc::Buffer data = Buffer::malloc(size);
 
   mc_model_checker->process().read_bytes(data.get(), size, remote(permanent_addr), simgrid::mc::ProcessIndexDisabled);
 
-#ifdef __linux__
-  if (_sg_mc_ksm)
-    // Mark the region as mergeable *after* we have written into it.
-    // Trying to merge them before is useless/counterproductive.
-    madvise(data.get(), size, MADV_MERGEABLE);
-#endif
-
   simgrid::mc::RegionSnapshot region(region_type, start_addr, permanent_addr, size);
   region.flat_data(std::move(data));
 
-  XBT_DEBUG("New region : type : %s, data : %p (real addr %p), size : %zu", to_cstr(region_type),
+  XBT_DEBUG("New region : type : %s, data : %p (real addr %p), size : %zu",
+            (region_type == RegionType::Heap ? "Heap" : (region_type == RegionType::Data ? "Data" : "?")),
             region.flat_data().get(), permanent_addr, size);
   return region;
 }
@@ -123,9 +58,10 @@ RegionSnapshot sparse_region(RegionType region_type, void* start_addr, void* per
   simgrid::mc::RemoteClient* process = &mc_model_checker->process();
   assert(process != nullptr);
 
-  xbt_assert((((uintptr_t)start_addr) & (xbt_pagesize - 1)) == 0, "Not at the beginning of a page");
-  xbt_assert((((uintptr_t)permanent_addr) & (xbt_pagesize - 1)) == 0, "Not at the beginning of a page");
-  size_t page_count = simgrid::mc::mmu::chunkCount(size);
+  xbt_assert((((uintptr_t)start_addr) & (xbt_pagesize - 1)) == 0, "Start address not at the beginning of a page");
+  xbt_assert((((uintptr_t)permanent_addr) & (xbt_pagesize - 1)) == 0,
+             "Permanent address not at the beginning of a page");
+  size_t page_count = simgrid::mc::mmu::chunk_count(size);
 
   simgrid::mc::ChunkedData page_data(mc_model_checker->page_store(), *process, RemotePtr<void>(permanent_addr),
                                      page_count);
index d1011af..8db62e4 100644 (file)
@@ -28,42 +28,43 @@ enum class StorageType { NoData = 0, Flat = 1, Chunked = 2, Privatized = 3 };
 
 class Buffer {
 private:
-  enum class Type { Malloc, Mmap };
   void* data_ = nullptr;
   std::size_t size_;
-  Type type_ = Type::Malloc;
 
-  Buffer(std::size_t size, Type type = Type::Malloc);
-  Buffer(void* data, std::size_t size, Type type = Type::Malloc) : data_(data), size_(size), type_(type) {}
+  Buffer(std::size_t size) : size_(size) { data_ = ::operator new(size_); }
+
+  Buffer(void* data, std::size_t size) : data_(data), size_(size) {}
 
 public:
   Buffer() = default;
-  void clear() noexcept;
+  void clear() noexcept
+  {
+    ::operator delete(data_);
+    data_ = nullptr;
+    size_ = 0;
+  }
+
   ~Buffer() noexcept { clear(); }
 
-  static Buffer malloc(std::size_t size) { return Buffer(size, Type::Malloc); }
-  static Buffer mmap(std::size_t size) { return Buffer(size, Type::Mmap); }
+  static Buffer malloc(std::size_t size) { return Buffer(size); }
 
   // No copy
   Buffer(Buffer const& buffer) = delete;
   Buffer& operator=(Buffer const& buffer) = delete;
 
   // Move
-  Buffer(Buffer&& that) noexcept : data_(that.data_), size_(that.size_), type_(that.type_)
+  Buffer(Buffer&& that) noexcept : data_(that.data_), size_(that.size_)
   {
     that.data_ = nullptr;
     that.size_ = 0;
-    that.type_ = Type::Malloc;
   }
   Buffer& operator=(Buffer&& that) noexcept
   {
     clear();
     data_      = that.data_;
     size_      = that.size_;
-    type_      = that.type_;
     that.data_ = nullptr;
     that.size_ = 0;
-    that.type_ = Type::Malloc;
     return *this;
   }
 
@@ -247,6 +248,4 @@ simgrid::mc::RegionSnapshot region(RegionType type, void* start_addr, void* data
 } // namespace mc
 } // namespace simgrid
 
-typedef simgrid::mc::RegionSnapshot s_mc_mem_region_t;
-typedef s_mc_mem_region_t* mc_mem_region_t;
 #endif
index 58a0bb9..e5bd494 100644 (file)
@@ -57,7 +57,7 @@ namespace mc {
  *
  *  @param region     Target region
  */
-static void restore(mc_mem_region_t region)
+static void restore(RegionSnapshot* region)
 {
   switch (region->storage_type()) {
     case simgrid::mc::StorageType::Flat:
@@ -65,7 +65,16 @@ static void restore(mc_mem_region_t region)
       break;
 
     case simgrid::mc::StorageType::Chunked:
-      mc_region_restore_sparse(&mc_model_checker->process(), region);
+      xbt_assert(((region->permanent_address().address()) & (xbt_pagesize - 1)) == 0, "Not at the beginning of a page");
+      xbt_assert(simgrid::mc::mmu::chunk_count(region->size()) == region->page_data().page_count());
+
+      for (size_t i = 0; i != region->page_data().page_count(); ++i) {
+        void* target_page =
+            (void*)simgrid::mc::mmu::join(i, (std::uintptr_t)(void*)region->permanent_address().address());
+        const void* source_page = region->page_data().page(i);
+        mc_model_checker->process().write_bytes(source_page, xbt_pagesize, remote(target_page));
+      }
+
       break;
 
     case simgrid::mc::StorageType::Privatized:
@@ -92,18 +101,18 @@ RegionSnapshot privatized_region(RegionType region_type, void* start_addr, void*
   mc_model_checker->process().read_bytes(&privatization_regions, sizeof(privatization_regions),
                                          remote(remote_smpi_privatization_regions));
 
-  std::vector<simgrid::mc::RegionSnapshot> data;
+  std::vector<RegionSnapshot> data;
   data.reserve(process_count);
   for (size_t i = 0; i < process_count; i++)
-    data.push_back(simgrid::mc::region(region_type, start_addr, privatization_regions[i].address, size));
+    data.push_back(region(region_type, start_addr, privatization_regions[i].address, size));
 
-  simgrid::mc::RegionSnapshot region = simgrid::mc::RegionSnapshot(region_type, start_addr, permanent_addr, size);
+  RegionSnapshot region = RegionSnapshot(region_type, start_addr, permanent_addr, size);
   region.privatized_data(std::move(data));
   return region;
 }
 #endif
 
-static void add_region(int index, simgrid::mc::Snapshot* snapshot, simgrid::mc::RegionType type,
+static void add_region(simgrid::mc::Snapshot* snapshot, simgrid::mc::RegionType type,
                        simgrid::mc::ObjectInformation* object_info, void* start_addr, void* permanent_addr,
                        std::size_t size)
 {
@@ -122,26 +131,23 @@ static void add_region(int index, simgrid::mc::Snapshot* snapshot, simgrid::mc::
     region = simgrid::mc::region(type, start_addr, permanent_addr, size);
 
   region.object_info(object_info);
-  snapshot->snapshot_regions[index] =
-      std::unique_ptr<simgrid::mc::RegionSnapshot>(new simgrid::mc::RegionSnapshot(std::move(region)));
+  snapshot->snapshot_regions.push_back(
+      std::unique_ptr<simgrid::mc::RegionSnapshot>(new simgrid::mc::RegionSnapshot(std::move(region))));
 }
 
 static void get_memory_regions(simgrid::mc::RemoteClient* process, simgrid::mc::Snapshot* snapshot)
 {
-  const size_t n = process->object_infos.size();
-  snapshot->snapshot_regions.resize(n + 1);
-  int i = 0;
-  for (auto const& object_info : process->object_infos) {
-    add_region(i, snapshot, simgrid::mc::RegionType::Data, object_info.get(), object_info->start_rw,
-               object_info->start_rw, object_info->end_rw - object_info->start_rw);
-    ++i;
-  }
+  snapshot->snapshot_regions.clear();
+
+  for (auto const& object_info : process->object_infos)
+    add_region(snapshot, simgrid::mc::RegionType::Data, object_info.get(), object_info->start_rw, object_info->start_rw,
+               object_info->end_rw - object_info->start_rw);
 
   xbt_mheap_t heap = process->get_heap();
   void* start_heap = heap->base;
   void* end_heap   = heap->breakval;
 
-  add_region(n, snapshot, simgrid::mc::RegionType::Heap, nullptr, start_heap, start_heap,
+  add_region(snapshot, simgrid::mc::RegionType::Heap, nullptr, start_heap, start_heap,
              (char*)end_heap - (char*)start_heap);
   snapshot->heap_bytes_used = mmalloc_get_bytes_used_remote(heap->heaplimit, process->get_malloc_info());
 
@@ -434,10 +440,7 @@ std::shared_ptr<simgrid::mc::Snapshot> take_snapshot(int num_state)
     snapshot->stacks = take_snapshot_stacks(snapshot.get());
     if (_sg_mc_hash)
       snapshot->hash = simgrid::mc::hash(*snapshot);
-    else
-      snapshot->hash = 0;
-  } else
-    snapshot->hash = 0;
+  }
 
   snapshot_ignore_restore(snapshot.get());
   return snapshot;
@@ -445,7 +448,7 @@ std::shared_ptr<simgrid::mc::Snapshot> take_snapshot(int num_state)
 
 static inline void restore_snapshot_regions(simgrid::mc::Snapshot* snapshot)
 {
-  for (std::unique_ptr<s_mc_mem_region_t> const& region : snapshot->snapshot_regions) {
+  for (std::unique_ptr<simgrid::mc::RegionSnapshot> const& region : snapshot->snapshot_regions) {
     // For privatized, variables we decided it was not necessary to take the snapshot:
     if (region)
       restore(region.get());
diff --git a/src/mc/sosp/mc_page_snapshot.cpp b/src/mc/sosp/mc_page_snapshot.cpp
deleted file mode 100644 (file)
index c3994d1..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright (c) 2014-2019. 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. */
-
-/* MC interface: definitions that non-MC modules must see, but not the user */
-
-#include <unistd.h> // pread, pwrite
-
-#include "src/mc/mc_mmu.hpp"
-#include "src/mc/mc_private.hpp"
-#include "src/mc/sosp/PageStore.hpp"
-#include "src/mc/sosp/mc_snapshot.hpp"
-
-#include "src/mc/sosp/ChunkedData.hpp"
-#include <xbt/mmalloc.h>
-
-using simgrid::mc::remote;
-
-/** @brief Restore a snapshot of a region
- *
- *  If possible, the restoration will be incremental
- *  (the modified pages will not be touched).
- *
- *  @param start_addr
- *  @param page_count       Number of pages of the region
- *  @param pagenos
- */
-void mc_restore_page_snapshot_region(simgrid::mc::RemoteClient* process, void* start_addr,
-                                     simgrid::mc::ChunkedData const& pages_copy)
-{
-  for (size_t i = 0; i != pages_copy.page_count(); ++i) {
-    // Otherwise, copy the page:
-    void* target_page       = (void*)simgrid::mc::mmu::join(i, (std::uintptr_t)start_addr);
-    const void* source_page = pages_copy.page(i);
-    process->write_bytes(source_page, xbt_pagesize, remote(target_page));
-  }
-}
-
-// ***** High level API
-
-void mc_region_restore_sparse(simgrid::mc::RemoteClient* process, mc_mem_region_t reg)
-{
-  xbt_assert(((reg->permanent_address().address()) & (xbt_pagesize - 1)) == 0, "Not at the beginning of a page");
-  xbt_assert(simgrid::mc::mmu::chunkCount(reg->size()) == reg->page_data().page_count());
-  mc_restore_page_snapshot_region(process, (void*)reg->permanent_address().address(), reg->page_data());
-}
index 34d2ee4..1678a59 100644 (file)
  *  @param snapshot Snapshot
  *  @param process_index rank requesting the region
  * */
-mc_mem_region_t mc_get_snapshot_region(const void* addr, const simgrid::mc::Snapshot* snapshot, int process_index)
+simgrid::mc::RegionSnapshot* mc_get_snapshot_region(const void* addr, const simgrid::mc::Snapshot* snapshot,
+                                                    int process_index)
 {
   size_t n = snapshot->snapshot_regions.size();
   for (size_t i = 0; i != n; ++i) {
-    mc_mem_region_t region = snapshot->snapshot_regions[i].get();
+    simgrid::mc::RegionSnapshot* region = snapshot->snapshot_regions[i].get();
     if (not(region && region->contain(simgrid::mc::remote(addr))))
       continue;
 
@@ -64,7 +65,7 @@ mc_mem_region_t mc_get_snapshot_region(const void* addr, const simgrid::mc::Snap
  *  @param size    Size of the data to read in bytes
  *  @return Pointer where the data is located (target buffer of original location)
  */
-const void* MC_region_read_fragmented(mc_mem_region_t region, void* target, const void* addr, size_t size)
+const void* MC_region_read_fragmented(simgrid::mc::RegionSnapshot* region, void* target, const void* addr, size_t size)
 {
   // Last byte of the memory area:
   void* end = (char*)addr + size - 1;
@@ -106,8 +107,8 @@ const void* MC_region_read_fragmented(mc_mem_region_t region, void* target, cons
  * @param region2 Region of the address in the second snapshot
  * @return same semantic as memcmp
  */
-int MC_snapshot_region_memcmp(const void* addr1, mc_mem_region_t region1, const void* addr2, mc_mem_region_t region2,
-                              size_t size)
+int MC_snapshot_region_memcmp(const void* addr1, simgrid::mc::RegionSnapshot* region1, const void* addr2,
+                              simgrid::mc::RegionSnapshot* region2, size_t size)
 {
   // Using alloca() for large allocations may trigger stack overflow:
   // use malloc if the buffer is too big.
@@ -148,7 +149,7 @@ Snapshot::Snapshot(RemoteClient* process, int _num_state)
 const void* Snapshot::read_bytes(void* buffer, std::size_t size, RemotePtr<void> address, int process_index,
                                  ReadOptions options) const
 {
-  mc_mem_region_t region = mc_get_snapshot_region((void*)address.address(), this, process_index);
+  RegionSnapshot* region = mc_get_snapshot_region((void*)address.address(), this, process_index);
   if (region) {
     const void* res = MC_region_read(region, buffer, (void*)address.address(), size);
     if (buffer == res || options & ReadOptions::lazy())
index 692990c..1926455 100644 (file)
@@ -13,9 +13,7 @@
 
 // ***** Snapshot region
 
-XBT_PRIVATE void mc_region_restore_sparse(simgrid::mc::RemoteClient* process, mc_mem_region_t reg);
-
-static XBT_ALWAYS_INLINE void* mc_translate_address_region_chunked(uintptr_t addr, mc_mem_region_t region)
+static XBT_ALWAYS_INLINE void* mc_translate_address_region_chunked(uintptr_t addr, simgrid::mc::RegionSnapshot* region)
 {
   auto split                = simgrid::mc::mmu::split(addr - region->start().address());
   auto pageno               = split.first;
@@ -24,7 +22,8 @@ static XBT_ALWAYS_INLINE void* mc_translate_address_region_chunked(uintptr_t add
   return (char*)snapshot_page + offset;
 }
 
-static XBT_ALWAYS_INLINE void* mc_translate_address_region(uintptr_t addr, mc_mem_region_t region, int process_index)
+static XBT_ALWAYS_INLINE void* mc_translate_address_region(uintptr_t addr, simgrid::mc::RegionSnapshot* region,
+                                                           int process_index)
 {
   switch (region->storage_type()) {
     case simgrid::mc::StorageType::Flat: {
@@ -44,8 +43,8 @@ static XBT_ALWAYS_INLINE void* mc_translate_address_region(uintptr_t addr, mc_me
   }
 }
 
-XBT_PRIVATE mc_mem_region_t mc_get_snapshot_region(const void* addr, const simgrid::mc::Snapshot* snapshot,
-                                                   int process_index);
+XBT_PRIVATE simgrid::mc::RegionSnapshot* mc_get_snapshot_region(const void* addr, const simgrid::mc::Snapshot* snapshot,
+                                                                int process_index);
 
 // ***** MC Snapshot
 
@@ -103,20 +102,21 @@ public:
   // To be private
   int num_state;
   std::size_t heap_bytes_used;
-  std::vector<std::unique_ptr<s_mc_mem_region_t>> snapshot_regions;
+  std::vector<std::unique_ptr<RegionSnapshot>> snapshot_regions;
   std::set<pid_t> enabled_processes;
   int privatization_index;
   std::vector<std::size_t> stack_sizes;
   std::vector<s_mc_snapshot_stack_t> stacks;
   std::vector<simgrid::mc::IgnoredHeapRegion> to_ignore;
-  std::uint64_t hash;
+  std::uint64_t hash = 0;
   std::vector<s_mc_snapshot_ignored_data_t> ignored_data;
 };
 } // namespace mc
 } // namespace simgrid
 
-static XBT_ALWAYS_INLINE mc_mem_region_t mc_get_region_hinted(void* addr, simgrid::mc::Snapshot* snapshot,
-                                                              int process_index, mc_mem_region_t region)
+static XBT_ALWAYS_INLINE simgrid::mc::RegionSnapshot* mc_get_region_hinted(void* addr, simgrid::mc::Snapshot* snapshot,
+                                                                           int process_index,
+                                                                           simgrid::mc::RegionSnapshot* region)
 {
   if (region->contain(simgrid::mc::remote(addr)))
     return region;
@@ -129,18 +129,16 @@ static const void* mc_snapshot_get_heap_end(simgrid::mc::Snapshot* snapshot);
 namespace simgrid {
 namespace mc {
 
-XBT_PRIVATE std::shared_ptr<simgrid::mc::Snapshot> take_snapshot(int num_state);
-XBT_PRIVATE void restore_snapshot(std::shared_ptr<simgrid::mc::Snapshot> snapshot);
+XBT_PRIVATE std::shared_ptr<Snapshot> take_snapshot(int num_state);
+XBT_PRIVATE void restore_snapshot(std::shared_ptr<Snapshot> snapshot);
 } // namespace mc
 } // namespace simgrid
 
-XBT_PRIVATE void mc_restore_page_snapshot_region(simgrid::mc::RemoteClient* process, void* start_addr,
-                                                 simgrid::mc::ChunkedData const& pagenos);
-
-const void* MC_region_read_fragmented(mc_mem_region_t region, void* target, const void* addr, std::size_t size);
+const void* MC_region_read_fragmented(simgrid::mc::RegionSnapshot* region, void* target, const void* addr,
+                                      std::size_t size);
 
-int MC_snapshot_region_memcmp(const void* addr1, mc_mem_region_t region1, const void* addr2, mc_mem_region_t region2,
-                              std::size_t size);
+int MC_snapshot_region_memcmp(const void* addr1, simgrid::mc::RegionSnapshot* region1, const void* addr2,
+                              simgrid::mc::RegionSnapshot* region2, std::size_t size);
 
 static XBT_ALWAYS_INLINE const void* mc_snapshot_get_heap_end(simgrid::mc::Snapshot* snapshot)
 {
@@ -157,7 +155,7 @@ static XBT_ALWAYS_INLINE const void* mc_snapshot_get_heap_end(simgrid::mc::Snaps
  *  @param size    Size of the data to read in bytes
  *  @return Pointer where the data is located (target buffer of original location)
  */
-static XBT_ALWAYS_INLINE const void* MC_region_read(mc_mem_region_t region, void* target, const void* addr,
+static XBT_ALWAYS_INLINE const void* MC_region_read(simgrid::mc::RegionSnapshot* region, void* target, const void* addr,
                                                     std::size_t size)
 {
   xbt_assert(region);
@@ -173,7 +171,7 @@ static XBT_ALWAYS_INLINE const void* MC_region_read(mc_mem_region_t region, void
     case simgrid::mc::StorageType::Chunked: {
       // Last byte of the region:
       void* end = (char*)addr + size - 1;
-      if (simgrid::mc::mmu::sameChunk((std::uintptr_t)addr, (std::uintptr_t)end)) {
+      if (simgrid::mc::mmu::same_chunk((std::uintptr_t)addr, (std::uintptr_t)end)) {
         // The memory is contained in a single page:
         return mc_translate_address_region_chunked((uintptr_t)addr, region);
       }
@@ -188,7 +186,7 @@ static XBT_ALWAYS_INLINE const void* MC_region_read(mc_mem_region_t region, void
   }
 }
 
-static XBT_ALWAYS_INLINE void* MC_region_read_pointer(mc_mem_region_t region, const void* addr)
+static XBT_ALWAYS_INLINE void* MC_region_read_pointer(simgrid::mc::RegionSnapshot* region, const void* addr)
 {
   void* res;
   return *(void**)MC_region_read(region, &res, addr, sizeof(void*));
index b4a47dd..933894a 100644 (file)
@@ -214,17 +214,16 @@ int PMPI_Error_class(int errorcode, int* errorclass) {
   return MPI_SUCCESS;
 }
 
-int PMPI_Error_string(int errorcode, char* string, int* resultlen){
-  if (errorcode<0 || errorcode>= MPI_MAX_ERROR_STRING || string ==nullptr){
+int PMPI_Error_string(int errorcode, char* string, int* resultlen)
+{
+  static const char* smpi_error_string[] = {FOREACH_ERROR(GENERATE_STRING)};
+  constexpr int nerrors                  = (sizeof smpi_error_string) / (sizeof smpi_error_string[0]);
+  if (errorcode < 0 || errorcode >= nerrors || string == nullptr)
     return MPI_ERR_ARG;
-  } else {
-    static const char *smpi_error_string[] = {
-      FOREACH_ERROR(GENERATE_STRING)
-    };
-    *resultlen = strlen(smpi_error_string[errorcode]);
-    strncpy(string, smpi_error_string[errorcode], *resultlen);
-    return MPI_SUCCESS;  
-  }
+
+  int len    = snprintf(string, MPI_MAX_ERROR_STRING, "%s", smpi_error_string[errorcode]);
+  *resultlen = std::min(len, MPI_MAX_ERROR_STRING - 1);
+  return MPI_SUCCESS;
 }
 
 int PMPI_Keyval_create(MPI_Copy_function* copy_fn, MPI_Delete_function* delete_fn, int* keyval, void* extra_state) {
index 0cfecd0..cb7ed51 100644 (file)
@@ -69,7 +69,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 static int is_2dmesh(int num, int *i, int *j)
 {
   int x, max = num / 2;
-  x = sqrt(num);
+  x = sqrt(double(num));
 
   while (x <= max) {
     if ((num % x) == 0) {
index f9c7f09..7d9a906 100644 (file)
@@ -33,7 +33,7 @@
 static int alltoall_check_is_2dmesh(int num, int *i, int *j)
 {
   int x, max = num / 2;
-  x = sqrt(num);
+  x = sqrt(double(num));
 
   while (x <= max) {
     if ((num % x) == 0) {
index 7d51422..7891c76 100644 (file)
@@ -21,7 +21,7 @@ int Coll_bcast_arrival_scatter::bcast(void *buf, int count,
                                           MPI_Comm comm)
 {
   int tag = -COLL_TAG_BCAST;//in order to use ANY_TAG, make this one positive
-  int header_tag = 10;
+  int header_tag = -10;
   MPI_Status status;
 
   int curr_remainder;
index 2991121..25cbf62 100644 (file)
@@ -33,7 +33,7 @@
 #   define MAC_OS_X_VERSION_10_12 101200
 # endif
 constexpr bool HAVE_WORKING_MMAP = (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12);
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__sun)
 constexpr bool HAVE_WORKING_MMAP = false;
 #else
 constexpr bool HAVE_WORKING_MMAP = true;
index 5bdf88d..7f51e7e 100644 (file)
@@ -212,7 +212,7 @@ MPI_Comm Comm::split(int color, int key)
 {
   if (this == MPI_COMM_UNINITIALIZED)
     return smpi_process()->comm_world()->split(color, key);
-  int system_tag = 123;
+  int system_tag = -123;
   int* recvbuf;
 
   MPI_Group group_root = nullptr;
index 85a9497..f0a08cc 100644 (file)
@@ -119,7 +119,7 @@ int Request::match_recv(void* a, void* b, simgrid::kernel::activity::CommImpl*)
 
   xbt_assert(ref, "Cannot match recv against null reference");
   xbt_assert(req, "Cannot match recv against null request");
-  if((ref->src_ == MPI_ANY_SOURCE || req->src_ == ref->src_)
+  if(((ref->src_ == MPI_ANY_SOURCE  && (ref->comm_->group()->rank(req->src_) != MPI_UNDEFINED)) || req->src_ == ref->src_)
     && ((ref->tag_ == MPI_ANY_TAG && req->tag_ >=0) || req->tag_ == ref->tag_)){
     //we match, we can transfer some values
     if(ref->src_ == MPI_ANY_SOURCE)
@@ -145,7 +145,7 @@ int Request::match_send(void* a, void* b, simgrid::kernel::activity::CommImpl*)
   xbt_assert(ref, "Cannot match send against null reference");
   xbt_assert(req, "Cannot match send against null request");
 
-  if((req->src_ == MPI_ANY_SOURCE || req->src_ == ref->src_)
+  if(((req->src_ == MPI_ANY_SOURCE  && (req->comm_->group()->rank(ref->src_) != MPI_UNDEFINED)) || req->src_ == ref->src_)
       && ((req->tag_ == MPI_ANY_TAG && ref->tag_ >=0)|| req->tag_ == ref->tag_)){
     if(req->src_ == MPI_ANY_SOURCE)
       req->real_src_ = ref->src_;
@@ -640,6 +640,7 @@ int Request::testany(int count, MPI_Request requests[], int *index, int* flag, M
     try{
       i = simcall_comm_testany(comms.data(), comms.size()); // The i-th element in comms matches!
     } catch (const xbt_ex&) {
+      XBT_DEBUG("Exception in testany");
       return 0;
     }
     
@@ -666,6 +667,7 @@ int Request::testany(int count, MPI_Request requests[], int *index, int* flag, M
 
         if (requests[*index] != MPI_REQUEST_NULL && (requests[*index]->flags_ & MPI_REQ_NON_PERSISTENT)) 
           requests[*index] = MPI_REQUEST_NULL;
+        XBT_DEBUG("Testany - returning with index %d", *index);
         *flag=1;
       }
       nsleeps = 1;
@@ -673,8 +675,10 @@ int Request::testany(int count, MPI_Request requests[], int *index, int* flag, M
       nsleeps++;
     }
   } else {
+      XBT_DEBUG("Testany on inactive handles, returning flag=1 but empty status");
       //all requests are null or inactive, return true
       *flag = 1;
+      *index = MPI_UNDEFINED;
       Status::empty(status);
   }
 
index 83b5147..3376a52 100644 (file)
@@ -387,8 +387,8 @@ static int getfactors(int num, int *nfactors, int **factors) {
     return MPI_SUCCESS;
   }
   /* Allocate the array of prime factors which cannot exceed log_2(num) entries */
-  int sqrtnum = ceil(sqrt(num));
-  int size = ceil(log(num) / log(2));
+  int sqrtnum = ceil(sqrt(double(num)));
+  int size = ceil(log(double(num)) / log(2.0));
   *factors = new int[size];
 
   int i = 0;
index 65ef772..9aa0a2a 100644 (file)
@@ -12,42 +12,41 @@ LISTSEP="$(printf '\b')"
 # Create a temporary file, with its name of the form $1_XXX$2, where XXX is replaced by an unique string.
 # $1: prefix, $2: suffix
 mymktemp () {
-    tmp=$(mktemp --suffix="$2" "$1_XXXXXXXXXX" 2> /dev/null)
-    if [ -z "$tmp" ]; then
+    local_tmp=$(mktemp --suffix="$2" "$1_XXXXXXXXXX" 2> /dev/null)
+    if [ -z "$local_tmp" ]; then
         # mktemp failed (unsupported --suffix ?), try unsafe mode
-        tmp=$(mktemp -u "$1_XXXXXXXXXX" 2> /dev/null)
-        if [ -z "$tmp" ]; then
+        local_tmp=$(mktemp -u "$1_XXXXXXXXXX" 2> /dev/null)
+        if [ -z "$local_tmp" ]; then
             # mktemp failed again (doesn't exist ?), try very unsafe mode
             if [ -z "${mymktemp_seq}" ]; then
                 mymktemp_seq=$(date +%d%H%M%S)
             fi
-            tmp="$1_$$x${mymktemp_seq}"
+            local_tmp="$1_$$x${mymktemp_seq}"
             mymktemp_seq=$((mymktemp_seq + 1))
         fi
-        tmp="${tmp}$2"
+        local_tmp="${local_tmp}$2"
         # create temp file, and exit if it existed before
-        sh -C -c "true > \"${tmp}\"" || exit 1
+        sh -C -c "true > \"${local_tmp}\"" || exit 1
     fi
-    echo "${tmp}"
+    echo "${local_tmp}"
 }
 
 # Add a word to the end of a list (words separated by LISTSEP)
 # $1: list, $2...: words to add
 list_add () {
-    local list content newcontent
-    list="$1"
+    local_list="$1"
     shift
     if [ $# -gt 0 ]; then
-        eval content=\"\${$list}\"
+        eval local_content=\"\${$local_list}\"
         IFS="$LISTSEP"
-        newcontent="$*"
+        local_newcontent="$*"
         IFS="$SAVEIFS"
-        if [ -z "$content" ]; then
-            content="$newcontent"
+        if [ -z "$local_content" ]; then
+            local_content="$local_newcontent"
         else
-            content="$content${LISTSEP}$newcontent"
+            local_content="$local_content${LISTSEP}$local_newcontent"
         fi
-        eval $list=\"\${content}\"
+        eval $local_list=\"\${local_content}\"
     fi
 }
 
index 09d521b..ff008ba 100644 (file)
@@ -152,7 +152,7 @@ std::vector<const char*> HostImpl::get_attached_storages()
 {
   std::vector<const char*> storages;
   for (auto const& s : storage_)
-    if (s.second->getHost() == piface_->get_cname())
+    if (s.second->get_host() == piface_->get_cname())
       storages.push_back(s.second->piface_.get_cname());
   return storages;
 }
index 3185177..8821467 100644 (file)
@@ -47,13 +47,13 @@ StorageImpl::StorageImpl(kernel::resource::Model* model, const std::string& name
 {
   StorageImpl::turn_on();
   XBT_DEBUG("Create resource with Bread '%f' Bwrite '%f' and Size '%llu'", bread, bwrite, size);
-  constraintRead_  = maxminSystem->constraint_new(this, bread);
-  constraintWrite_ = maxminSystem->constraint_new(this, bwrite);
+  constraint_read_  = maxminSystem->constraint_new(this, bread);
+  constraint_write_ = maxminSystem->constraint_new(this, bwrite);
 }
 
 StorageImpl::~StorageImpl()
 {
-  xbt_assert(currentlyDestroying_, "Don't delete Storages directly. Call destroy() instead.");
+  xbt_assert(currently_destroying_, "Don't delete Storages directly. Call destroy() instead.");
 }
 
 /** @brief Fire the required callbacks and destroy the object
@@ -62,8 +62,8 @@ StorageImpl::~StorageImpl()
  */
 void StorageImpl::destroy()
 {
-  if (not currentlyDestroying_) {
-    currentlyDestroying_ = true;
+  if (not currently_destroying_) {
+    currently_destroying_ = true;
     s4u::Storage::on_destruction(this->piface_);
     delete this;
   }
index ab66f32..1e38c51 100644 (file)
@@ -82,7 +82,7 @@ public:
   void turn_off() override;
 
   void destroy(); // Must be called instead of the destructor
-  virtual Action* io_start(sg_size_t size, s4u::Io::OpType type) = 0;
+  virtual StorageAction* io_start(sg_size_t size, s4u::Io::OpType type) = 0;
   /**
    * @brief Read a file
    *
@@ -98,17 +98,17 @@ public:
    * @return The StorageAction corresponding to the writing
    */
   virtual StorageAction* write(sg_size_t size) = 0;
-  virtual std::string getHost() { return attach_; }
+  const std::string& get_host() const { return attach_; }
 
-  lmm::Constraint* constraintWrite_; /* Constraint for maximum write bandwidth*/
-  lmm::Constraint* constraintRead_;  /* Constraint for maximum write bandwidth*/
+  lmm::Constraint* constraint_write_; /* Constraint for maximum write bandwidth*/
+  lmm::Constraint* constraint_read_;  /* Constraint for maximum write bandwidth*/
 
   std::string typeId_;
   std::string content_name_; // Only used at parsing time then goes to the FileSystemExtension
   sg_size_t size_;          // Only used at parsing time then goes to the FileSystemExtension
 
 private:
-  bool currentlyDestroying_ = false;
+  bool currently_destroying_ = false;
   // Name of the host to which this storage is attached. Only used at platform parsing time, then the interface stores
   // the Host directly.
   std::string attach_;
index 4b273c7..a011ad3 100644 (file)
@@ -48,6 +48,8 @@ public:
  * Resource *
  ************/
 
+class CpuAction;
+
 /** @ingroup SURF_cpu_interface
 * @brief SURF cpu resource interface class
 * @details A Cpu represent a cpu associated to a host
@@ -90,7 +92,7 @@ public:
    * @param size The value of the processing amount (in flop) needed to process
    * @return The CpuAction corresponding to the processing
    */
-  virtual Action* execution_start(double size) = 0;
+  virtual CpuAction* execution_start(double size) = 0;
 
   /**
    * @brief Execute some quantity of computation on more than one core
@@ -99,7 +101,7 @@ public:
    * @param requested_cores The desired amount of cores. Must be >= 1
    * @return The CpuAction corresponding to the processing
    */
-  virtual Action* execution_start(double size, int requested_cores) = 0;
+  virtual CpuAction* execution_start(double size, int requested_cores) = 0;
 
   /**
    * @brief Make a process sleep for duration (in seconds)
@@ -107,7 +109,7 @@ public:
    * @param duration The number of seconds to sleep
    * @return The CpuAction corresponding to the sleeping
    */
-  virtual Action* sleep(double duration) = 0;
+  virtual CpuAction* sleep(double duration) = 0;
 
   /** @brief Get the amount of cores */
   virtual int get_core_count();
index 2bcdfab..f304375 100644 (file)
@@ -112,7 +112,7 @@ public:
 
   bool is_used() override;
   CpuAction* execution_start(double size) override;
-  Action* execution_start(double, int) override
+  CpuAction* execution_start(double, int) override
   {
     THROW_UNIMPLEMENTED;
     return nullptr;
index 19e985e..384656c 100644 (file)
@@ -131,9 +131,9 @@ void HostL07Model::update_actions_state(double /*now*/, double delta)
   }
 }
 
-kernel::resource::Action* HostL07Model::execute_parallel(const std::vector<s4u::Host*>& host_list,
-                                                         const double* flops_amount, const double* bytes_amount,
-                                                         double rate)
+kernel::resource::CpuAction* HostL07Model::execute_parallel(const std::vector<s4u::Host*>& host_list,
+                                                            const double* flops_amount, const double* bytes_amount,
+                                                            double rate)
 {
   return new L07Action(this, host_list, flops_amount, bytes_amount, rate);
 }
@@ -254,20 +254,20 @@ LinkL07::LinkL07(NetworkL07Model* model, const std::string& name, double bandwid
   s4u::Link::on_creation(this->piface_);
 }
 
-kernel::resource::Action* CpuL07::execution_start(double size)
+kernel::resource::CpuAction* CpuL07::execution_start(double size)
 {
   std::vector<s4u::Host*> host_list = {get_host()};
 
   double* flops_amount = new double[host_list.size()]();
   flops_amount[0] = size;
 
-  kernel::resource::Action* res =
+  kernel::resource::CpuAction* res =
       static_cast<CpuL07Model*>(get_model())->hostModel_->execute_parallel(host_list, flops_amount, nullptr, -1);
   static_cast<L07Action*>(res)->free_arrays_ = true;
   return res;
 }
 
-kernel::resource::Action* CpuL07::sleep(double duration)
+kernel::resource::CpuAction* CpuL07::sleep(double duration)
 {
   L07Action *action = static_cast<L07Action*>(execution_start(1.0));
   action->set_max_duration(duration);
index 568618a..523e00f 100644 (file)
@@ -42,8 +42,8 @@ public:
 
   double next_occuring_event(double now) override;
   void update_actions_state(double now, double delta) override;
-  kernel::resource::Action* execute_parallel(const std::vector<s4u::Host*>& host_list, const double* flops_amount,
-                                             const double* bytes_amount, double rate) override;
+  kernel::resource::CpuAction* execute_parallel(const std::vector<s4u::Host*>& host_list, const double* flops_amount,
+                                                const double* bytes_amount, double rate) override;
 };
 
 class CpuL07Model : public kernel::resource::CpuModel {
@@ -83,13 +83,13 @@ public:
   ~CpuL07() override;
   bool is_used() override;
   void apply_event(kernel::profile::Event* event, double value) override;
-  kernel::resource::Action* execution_start(double size) override;
-  kernel::resource::Action* execution_start(double, int) override
+  kernel::resource::CpuAction* execution_start(double size) override;
+  kernel::resource::CpuAction* execution_start(double, int) override
   {
     THROW_UNIMPLEMENTED;
     return nullptr;
   }
-  kernel::resource::Action* sleep(double duration) override;
+  kernel::resource::CpuAction* sleep(double duration) override;
 
 protected:
   void on_speed_change() override;
@@ -112,10 +112,10 @@ public:
  * Action *
  **********/
 class L07Action : public kernel::resource::CpuAction {
-  friend Action *CpuL07::execution_start(double size);
-  friend Action *CpuL07::sleep(double duration);
-  friend Action* HostL07Model::execute_parallel(const std::vector<s4u::Host*>& host_list, const double* flops_amount,
-                                                const double* bytes_amount, double rate);
+  friend CpuAction* CpuL07::execution_start(double size);
+  friend CpuAction* CpuL07::sleep(double duration);
+  friend CpuAction* HostL07Model::execute_parallel(const std::vector<s4u::Host*>& host_list, const double* flops_amount,
+                                                   const double* bytes_amount, double rate);
   friend Action* NetworkL07Model::communicate(s4u::Host* src, s4u::Host* dst, double size, double rate);
 
 public:
index 1b4095a..6518688 100644 (file)
@@ -22,12 +22,12 @@ void check_disk_attachment()
 {
   for (auto const& s : simgrid::s4u::Engine::get_instance()->get_all_storages()) {
     simgrid::kernel::routing::NetPoint* host_elm =
-        simgrid::s4u::Engine::get_instance()->netpoint_by_name_or_null(s->get_impl()->getHost());
+        simgrid::s4u::Engine::get_instance()->netpoint_by_name_or_null(s->get_impl()->get_host());
     if (not host_elm)
       surf_parse_error(std::string("Unable to attach storage ") + s->get_cname() + ": host " +
-                       s->get_impl()->getHost() + " does not exist.");
+                       s->get_impl()->get_host() + " does not exist.");
     else
-      s->set_host(simgrid::s4u::Host::by_name(s->get_impl()->getHost()));
+      s->set_host(simgrid::s4u::Host::by_name(s->get_impl()->get_host()));
   }
 }
 
@@ -127,10 +127,10 @@ StorageN11Action::StorageN11Action(Model* model, double cost, bool failed, Stora
   model->get_maxmin_system()->expand(storage->get_constraint(), get_variable(), 1.0);
   switch(type) {
     case s4u::Io::OpType::READ:
-      model->get_maxmin_system()->expand(storage->constraintRead_, get_variable(), 1.0);
+      model->get_maxmin_system()->expand(storage->constraint_read_, get_variable(), 1.0);
       break;
     case s4u::Io::OpType::WRITE:
-      model->get_maxmin_system()->expand(storage->constraintWrite_, get_variable(), 1.0);
+      model->get_maxmin_system()->expand(storage->constraint_write_, get_variable(), 1.0);
       break;
     default:
       THROW_UNIMPLEMENTED;
index 4d4f67c..309b7c5 100644 (file)
@@ -45,9 +45,9 @@ public:
              double bwrite, const std::string& type_id, const std::string& content_name, sg_size_t size,
              const std::string& attach);
   virtual ~StorageN11() = default;
-  StorageAction* io_start(sg_size_t size, s4u::Io::OpType type);
-  StorageAction* read(sg_size_t size);
-  StorageAction* write(sg_size_t size);
+  StorageAction* io_start(sg_size_t size, s4u::Io::OpType type) override;
+  StorageAction* read(sg_size_t size) override;
+  StorageAction* write(sg_size_t size) override;
 };
 
 /**********
index 9dd422f..43ce328 100644 (file)
 #endif
 
 #include <cinttypes>
-#include <xbt/base.h>
-#include <xbt/log.h>
-#include <xbt/sysdep.h>
 
 #include "memory_map.hpp"
 
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_memory_map, xbt, "Logging specific to algorithms for memory_map");
-
 namespace simgrid {
 namespace xbt {
 
 /**
  * \todo This function contains many cases that do not allow for a
- *       recovery. Currently, xbt_abort() is called but we should
+ *       recovery. Currently, abort() is called but we should
  *       much rather die with the specific reason so that it's easier
  *       to find out what's going on.
  */
-XBT_PRIVATE std::vector<VmMap> get_memory_map(pid_t pid)
+std::vector<VmMap> get_memory_map(pid_t pid)
 {
   std::vector<VmMap> ret;
 #if defined __APPLE__
@@ -73,7 +68,8 @@ XBT_PRIVATE std::vector<VmMap> get_memory_map(pid_t pid)
   /* Request authorization to read mappings */
   if (task_for_pid(mach_task_self(), pid, &map) != KERN_SUCCESS) {
     std::perror("task_for_pid failed");
-    xbt_die("Cannot request authorization for kernel information access");
+    std::fprintf(stderr, "Cannot request authorization for kernel information access\n");
+    abort();
   }
 
   /*
@@ -109,7 +105,8 @@ XBT_PRIVATE std::vector<VmMap> get_memory_map(pid_t pid)
     }
     else if (kr != KERN_SUCCESS) {
       std::perror("mach_vm_region failed");
-      xbt_die("Cannot request authorization for kernel information access");
+      std::fprintf(stderr, "Cannot request authorization for kernel information access\n");
+      abort();
     }
 
     VmMap memreg;
@@ -149,9 +146,11 @@ XBT_PRIVATE std::vector<VmMap> get_memory_map(pid_t pid)
     if (dladdr(reinterpret_cast<void*>(address), &dlinfo))
       memreg.pathname = dlinfo.dli_fname;
 
-    XBT_DEBUG("Region: %016" PRIx64 "-%016" PRIx64 " | %c%c%c | %s", memreg.start_addr, memreg.end_addr,
+#if 0 /* debug */
+    std::fprintf(stderr, "Region: %016" PRIx64 "-%016" PRIx64 " | %c%c%c | %s\n", memreg.start_addr, memreg.end_addr,
               (memreg.prot & PROT_READ) ? 'r' : '-', (memreg.prot & PROT_WRITE) ? 'w' : '-',
               (memreg.prot & PROT_EXEC) ? 'x' : '-', memreg.pathname.c_str());
+#endif
 
     ret.push_back(std::move(memreg));
     address += size;
@@ -167,7 +166,8 @@ XBT_PRIVATE std::vector<VmMap> get_memory_map(pid_t pid)
   fp.open(path);
   if (not fp) {
     std::perror("open failed");
-    xbt_die("Cannot open %s to investigate the memory map of the process.", path.c_str());
+    std::fprintf(stderr, "Cannot open %s to investigate the memory map of the process.\n", path.c_str());
+    abort();
   }
 
   /* Read one line at the time, parse it and add it to the memory map to be returned */
@@ -190,34 +190,39 @@ XBT_PRIVATE std::vector<VmMap> get_memory_map(pid_t pid)
     }
 
     /* Check to see if we got the expected amount of columns */
-    if (i < 6)
-      xbt_die("The memory map apparently only supplied less than 6 columns. Recovery impossible.");
+    if (i < 6) {
+      std::fprintf(stderr, "The memory map apparently only supplied less than 6 columns. Recovery impossible.\n");
+      abort();
+    }
 
     /* Ok we are good enough to try to get the info we need */
     /* First get the start and the end address of the map   */
     char* tok = strtok_r(lfields[0], "-", &saveptr);
-    if (tok == nullptr)
-      xbt_die("Start and end address of the map are not concatenated by a hyphen (-). Recovery impossible.");
+    if (tok == nullptr) {
+      std::fprintf(stderr,
+                   "Start and end address of the map are not concatenated by a hyphen (-). Recovery impossible.\n");
+      abort();
+    }
 
     VmMap memreg;
     char *endptr;
     memreg.start_addr = std::strtoull(tok, &endptr, 16);
     /* Make sure that the entire string was an hex number */
     if (*endptr != '\0')
-      xbt_abort();
+      abort();
 
     tok = strtok_r(nullptr, "-", &saveptr);
     if (tok == nullptr)
-      xbt_abort();
+      abort();
 
     memreg.end_addr = std::strtoull(tok, &endptr, 16);
     /* Make sure that the entire string was an hex number */
     if (*endptr != '\0')
-      xbt_abort();
+      abort();
 
     /* Get the permissions flags */
     if (std::strlen(lfields[1]) < 4)
-      xbt_abort();
+      abort();
 
     memreg.prot = 0;
     for (i = 0; i < 3; i++){
@@ -244,40 +249,41 @@ XBT_PRIVATE std::vector<VmMap> get_memory_map(pid_t pid)
     } else {
       memreg.flags |= MAP_SHARED;
       if (lfields[1][3] != 's')
-        XBT_WARN("The protection is neither 'p' (private) nor 's' (shared) but '%s'. Let's assume shared, as on b0rken "
-                 "win-ubuntu systems.\nFull line: %s\n",
-                 lfields[1], line);
+        fprintf(stderr,
+                "The protection is neither 'p' (private) nor 's' (shared) but '%s'. Let's assume shared, as on b0rken "
+                "win-ubuntu systems.\nFull line: %s\n",
+                lfields[1], line);
     }
 
     /* Get the offset value */
     memreg.offset = std::strtoull(lfields[2], &endptr, 16);
     /* Make sure that the entire string was an hex number */
     if (*endptr != '\0')
-      xbt_abort();
+      abort();
 
     /* Get the device major:minor bytes */
     tok = strtok_r(lfields[3], ":", &saveptr);
     if (tok == nullptr)
-      xbt_abort();
+      abort();
 
     memreg.dev_major = (char) strtoul(tok, &endptr, 16);
     /* Make sure that the entire string was an hex number */
     if (*endptr != '\0')
-      xbt_abort();
+      abort();
 
     tok = strtok_r(nullptr, ":", &saveptr);
     if (tok == nullptr)
-      xbt_abort();
+      abort();
 
     memreg.dev_minor = (char) std::strtoul(tok, &endptr, 16);
     /* Make sure that the entire string was an hex number */
     if (*endptr != '\0')
-      xbt_abort();
+      abort();
 
     /* Get the inode number and make sure that the entire string was a long int */
     memreg.inode = strtoul(lfields[4], &endptr, 10);
     if (*endptr != '\0')
-      xbt_abort();
+      abort();
 
     /* And finally get the pathname */
     if (lfields[5])
@@ -285,7 +291,7 @@ XBT_PRIVATE std::vector<VmMap> get_memory_map(pid_t pid)
 
     /* Create space for a new map region in the region's array and copy the */
     /* parsed stuff from the temporal memreg variable */
-    XBT_DEBUG("Found region for %s", not memreg.pathname.empty() ? memreg.pathname.c_str() : "(null)");
+    // std::fprintf(stderr, "Found region for %s\n", not memreg.pathname.empty() ? memreg.pathname.c_str() : "(null)");
 
     ret.push_back(std::move(memreg));
   }
@@ -299,15 +305,18 @@ XBT_PRIVATE std::vector<VmMap> get_memory_map(pid_t pid)
 
   if ((prstat = procstat_open_sysctl()) == NULL) {
     std::perror("procstat_open_sysctl failed");
-    xbt_die("Cannot access kernel state information");
+    std::fprintf(stderr, "Cannot access kernel state information\n");
+    abort();
   }
   if ((proc = procstat_getprocs(prstat, KERN_PROC_PID, pid, &cnt)) == NULL) {
     std::perror("procstat_open_sysctl failed");
-    xbt_die("Cannot access process information");
+    std::fprintf(stderr, "Cannot access process information\n");
+    abort();
   }
   if ((vmentries = procstat_getvmmap(prstat, proc, &cnt)) == NULL) {
     std::perror("procstat_getvmmap failed");
-    xbt_die("Cannot access process memory mappings");
+    std::fprintf(stderr, "Cannot access process memory mappings\n");
+    abort();
   }
   for (unsigned int i = 0; i < cnt; i++) {
     VmMap memreg;
@@ -371,7 +380,8 @@ XBT_PRIVATE std::vector<VmMap> get_memory_map(pid_t pid)
   procstat_freeprocs(prstat, proc);
   procstat_close(prstat);
 #else
-  xbt_die("Could not get memory map from process %lli", (long long int) pid);
+  std::fprintf(stderr, "Could not get memory map from process %lli\n", (long long int)pid);
+  abort();
 #endif
   return ret;
 }
index 974b88f..5938899 100644 (file)
@@ -11,9 +11,6 @@
 #include <string>
 #include <vector>
 
-#include <xbt/base.h>
-#include <sys/types.h>
-
 namespace simgrid {
 namespace xbt {
 
@@ -30,8 +27,7 @@ struct VmMap {
   std::string pathname;         /* Path name of the mapped file */
 };
 
-XBT_PRIVATE std::vector<VmMap> get_memory_map(pid_t pid);
-
+std::vector<VmMap> get_memory_map(pid_t pid);
 }
 }
 
index c39217e..79a98cb 100644 (file)
@@ -28,7 +28,7 @@ $ ${bindir:=.}/examples/deprecated/msg/app-masterworker/app-masterworker ${srcdi
 > [Bourassa:worker:(6) 5.133855] [msg_app_masterworker/INFO] I'm done. See you!
 > [5.133855] [msg_app_masterworker/INFO] Simulation time 5.13386
 
-$ $SG_TEST_EXENV ${bindir:=.}/teshsuite/msg/app-token-ring/app-token-ring ${srcdir:=.}/examples/platforms/routing_cluster.lua "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/teshsuite/msg/app-token-ring/app-token-ring ${srcdir:=.}/examples/platforms/routing_cluster.lua "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Number of hosts '6'
 > [  0.000000] (1:0@host1) Host "0" send 'Token' to Host "1"
 > [  0.017354] (2:1@host2) Host "1" received "Token"
index 471fa94..787f2bc 100644 (file)
@@ -1,3 +1,3 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/dwarf-expression
+$ ${bindir:=.}/dwarf-expression
index 6c3b12c..f6c817b 100644 (file)
@@ -1,3 +1,3 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/dwarf
+$ ${bindir:=.}/dwarf
index 1fec35e..2cf1115 100644 (file)
@@ -1,14 +1,14 @@
 #!/usr/bin/env tesh
 ! expect return 1
-$ ${bindir:=.}/../../../bin/simgrid-mc ${bindir:=.}/random-bug ${srcdir:=.}/examples/platforms/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --log=xbt_cfg.thresh:warning --cfg=model-check/record:1
+$ ${bindir:=.}/../../../bin/simgrid-mc ${bindir:=.}/random-bug ${srcdir:=.}/examples/platforms/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --log=xbt_cfg.thresh:warning
 > [  0.000000] (0:maestro@) Check a safety property. Reduction is: dpor.
 > [  0.000000] (0:maestro@) **************************
 > [  0.000000] (0:maestro@) *** PROPERTY NOT VALID ***
 > [  0.000000] (0:maestro@) **************************
 > [  0.000000] (0:maestro@) Counter-example execution trace:
+> [  0.000000] (0:maestro@)   [(1)Tremblay (app)] MC_RANDOM(3)
+> [  0.000000] (0:maestro@)   [(1)Tremblay (app)] MC_RANDOM(4)
 > [  0.000000] (0:maestro@) Path = 1/3;1/4
-> [  0.000000] (0:maestro@) [(1)Tremblay (app)] MC_RANDOM(3)
-> [  0.000000] (0:maestro@) [(1)Tremblay (app)] MC_RANDOM(4)
 > [  0.000000] (0:maestro@) Expanded states = 27
 > [  0.000000] (0:maestro@) Visited states = 68
 > [  0.000000] (0:maestro@) Executed transitions = 46
index f26c366..ddeb69f 100644 (file)
@@ -4,7 +4,7 @@ p Testing the chainsend MSG implementation
 
 ! timeout 60
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/chainsend ${platfdir}/cluster_backbone.xml app-chainsend_d.xml "--log=root.fmt:[%12.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/chainsend ${platfdir}/cluster_backbone.xml app-chainsend_d.xml "--log=root.fmt:[%12.6r]%e(%i:%P@%h)%e%m%n"
 > [    2.214423] (2:peer@node-1.simgrid.org) ### 2.214423 16777216 bytes (Avg 7.225359 MB/s); copy finished (simulated).
 > [    2.222796] (3:peer@node-2.simgrid.org) ### 2.222796 16777216 bytes (Avg 7.198141 MB/s); copy finished (simulated).
 > [    2.231170] (4:peer@node-3.simgrid.org) ### 2.231170 16777216 bytes (Avg 7.171126 MB/s); copy finished (simulated).
index aa9f5c6..46a4387 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing with default compound
 
-$ $SG_TEST_EXENV ${bindir:=.}/app-pingpong$EXEEXT ${platfdir}/small_platform.xml app-pingpong_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/app-pingpong ${platfdir}/small_platform.xml app-pingpong_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:pinger@Tremblay) Ping -> Jupiter
 > [  0.000000] (2:ponger@Jupiter) Pong -> Tremblay
 > [  0.019014] (2:ponger@Jupiter) Task received : small communication (latency bound)
@@ -14,7 +14,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/app-pingpong$EXEEXT ${platfdir}/small_platform.xml
 
 p Testing with default compound and Full network optimization
 
-$ $SG_TEST_EXENV ${bindir:=.}/app-pingpong$EXEEXT ${platfdir}/small_platform.xml app-pingpong_d.xml "--cfg=network/optim:Full" "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/app-pingpong ${platfdir}/small_platform.xml app-pingpong_d.xml "--cfg=network/optim:Full" "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/optim' to 'Full'
 > [  0.000000] (1:pinger@Tremblay) Ping -> Jupiter
 > [  0.000000] (2:ponger@Jupiter) Pong -> Tremblay
@@ -27,7 +27,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/app-pingpong$EXEEXT ${platfdir}/small_platform.xml
 
 p Testing the deprecated CM02 network model
 
-$ $SG_TEST_EXENV ${bindir:=.}/app-pingpong$EXEEXT ${platfdir}/small_platform.xml app-pingpong_d.xml --cfg=cpu/model:Cas01 --cfg=network/model:CM02 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/app-pingpong ${platfdir}/small_platform.xml app-pingpong_d.xml --cfg=cpu/model:Cas01 --cfg=network/model:CM02 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'cpu/model' to 'Cas01'
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'CM02'
 > [  0.000000] (1:pinger@Tremblay) Ping -> Jupiter
@@ -41,7 +41,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/app-pingpong$EXEEXT ${platfdir}/small_platform.xml
 
 p Testing the surf network Reno fairness model using lagrangian approach
 
-$ $SG_TEST_EXENV ${bindir:=.}/app-pingpong$EXEEXT ${platfdir}/small_platform.xml app-pingpong_d.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Reno" --log=surf_lagrange.thres=critical "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/app-pingpong ${platfdir}/small_platform.xml app-pingpong_d.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Reno" --log=surf_lagrange.thres=critical "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'compound'
 > [  0.000000] (0:maestro@) Configuration change: Set 'cpu/model' to 'Cas01'
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'Reno'
@@ -56,7 +56,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/app-pingpong$EXEEXT ${platfdir}/small_platform.xml
 
 p Testing the surf network Reno2 fairness model using lagrangian approach
 
-$ $SG_TEST_EXENV ${bindir:=.}/app-pingpong$EXEEXT ${platfdir}/small_platform.xml app-pingpong_d.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Reno2" --log=surf_lagrange.thres=critical "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/app-pingpong ${platfdir}/small_platform.xml app-pingpong_d.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Reno2" --log=surf_lagrange.thres=critical "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'compound'
 > [  0.000000] (0:maestro@) Configuration change: Set 'cpu/model' to 'Cas01'
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'Reno2'
@@ -71,7 +71,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/app-pingpong$EXEEXT ${platfdir}/small_platform.xml
 
 p Testing the surf network Vegas fairness model using lagrangian approach
 
-$ $SG_TEST_EXENV ${bindir:=.}/app-pingpong$EXEEXT ${platfdir}/small_platform.xml app-pingpong_d.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Vegas" "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/app-pingpong ${platfdir}/small_platform.xml app-pingpong_d.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Vegas" "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'compound'
 > [  0.000000] (0:maestro@) Configuration change: Set 'cpu/model' to 'Cas01'
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'Vegas'
@@ -86,7 +86,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/app-pingpong$EXEEXT ${platfdir}/small_platform.xml
 
 p Testing the surf network constant model
 
-$ $SG_TEST_EXENV ${bindir:=.}/app-pingpong$EXEEXT ${platfdir}/small_platform_constant.xml app-pingpong_d.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Constant" "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/app-pingpong ${platfdir}/small_platform_constant.xml app-pingpong_d.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Constant" "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'compound'
 > [  0.000000] (0:maestro@) Configuration change: Set 'cpu/model' to 'Cas01'
 > [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'Constant'
index 00c488e..47f5abf 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/app-token-ring ${platfdir}/routing_cluster.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/app-token-ring ${platfdir}/routing_cluster.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Number of hosts '6'
 > [  0.000000] (1:0@host1) Host "0" send 'Token' to Host "1"
 > [  0.017354] (2:1@host2) Host "1" received "Token"
@@ -16,7 +16,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/app-token-ring ${platfdir}/routing_cluster.xml "--
 > [  0.131796] (1:0@host1) Host "0" received "Token"
 > [  0.131796] (0:maestro@) Simulation time 0.131796
 
-$ $SG_TEST_EXENV ${bindir:=.}/app-token-ring ${platfdir}/two_peers.xml "--log=root.fmt:[%12.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/app-token-ring ${platfdir}/two_peers.xml "--log=root.fmt:[%12.6r]%e(%i:%P@%h)%e%m%n"
 > [    0.000000] (0:maestro@) Number of hosts '2'
 > [    0.000000] (1:0@100030591) Host "0" send 'Token' to Host "1"
 > [    0.624423] (2:1@100036570) Host "1" received "Token"
@@ -24,7 +24,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/app-token-ring ${platfdir}/two_peers.xml "--log=ro
 > [    1.248846] (1:0@100030591) Host "0" received "Token"
 > [    1.248846] (0:maestro@) Simulation time 1.24885
 
-$ $SG_TEST_EXENV ${bindir:=.}/app-token-ring ${platfdir}/meta_cluster.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/app-token-ring ${platfdir}/meta_cluster.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Number of hosts '60'
 > [  0.000000] (1:0@host-1.cluster1) Host "0" send 'Token' to Host "1"
 > [  0.030364] (2:1@host-1.cluster2) Host "1" received "Token"
index 322ad38..daab871 100644 (file)
@@ -2,7 +2,7 @@
 
 p Test1 MSG_comm_test() with Sleep_sender > Sleep_receiver
 
-$ $SG_TEST_EXENV ${bindir:=.}/async-wait ${platfdir:=.}/small_platform_fatpipe.xml ${srcdir:=.}/async-wait_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/async-wait ${platfdir:=.}/small_platform_fatpipe.xml ${srcdir:=.}/async-wait_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:sender@Tremblay) sleep_start_time : 5.000000 , sleep_test_time : 0.100000
 > [  0.000000] (2:receiver@Ruby) sleep_start_time : 1.000000 , sleep_test_time : 0.100000
 > [  1.000000] (2:receiver@Ruby) Wait to receive a task
@@ -29,7 +29,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/async-wait ${platfdir:=.}/small_platform_fatpipe.x
 
 p Test2 MSG_comm_test() with Sleep_sender < Sleep_receiver
 
-$ $SG_TEST_EXENV ${bindir:=.}/async-wait ${platfdir:=.}/small_platform_fatpipe.xml ${srcdir:=.}/async-wait2_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/async-wait ${platfdir:=.}/small_platform_fatpipe.xml ${srcdir:=.}/async-wait2_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:sender@Tremblay) sleep_start_time : 1.000000 , sleep_test_time : 0.100000
 > [  0.000000] (2:receiver@Ruby) sleep_start_time : 5.000000 , sleep_test_time : 0.100000
 > [  1.000000] (1:sender@Tremblay) Send to receiver-0 Task_0
@@ -56,7 +56,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/async-wait ${platfdir:=.}/small_platform_fatpipe.x
 
 p Test1 MSG_comm_wait() with Sleep_sender > Sleep_receiver
 
-$ $SG_TEST_EXENV ${bindir:=.}/async-wait ${platfdir:=.}/small_platform_fatpipe.xml ${srcdir:=.}/async-wait3_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/async-wait ${platfdir:=.}/small_platform_fatpipe.xml ${srcdir:=.}/async-wait3_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:sender@Tremblay) sleep_start_time : 5.000000 , sleep_test_time : 0.000000
 > [  0.000000] (2:receiver@Ruby) sleep_start_time : 1.000000 , sleep_test_time : 0.000000
 > [  1.000000] (2:receiver@Ruby) Wait to receive a task
@@ -84,7 +84,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/async-wait ${platfdir:=.}/small_platform_fatpipe.x
 
 p Test2 MSG_comm_wait() with Sleep_sender < Sleep_receiver
 
-$ $SG_TEST_EXENV ${bindir:=.}/async-wait ${platfdir:=.}/small_platform_fatpipe.xml ${srcdir:=.}/async-wait4_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/async-wait ${platfdir:=.}/small_platform_fatpipe.xml ${srcdir:=.}/async-wait4_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:sender@Tremblay) sleep_start_time : 1.000000 , sleep_test_time : 0.000000
 > [  0.000000] (2:receiver@Ruby) sleep_start_time : 5.000000 , sleep_test_time : 0.000000
 > [  1.000000] (1:sender@Tremblay) Send to receiver-0 Task_0
index 717ac31..b815ef3 100644 (file)
@@ -2,7 +2,7 @@
 p Test1 MSG_comm_waitall() for sender
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/async-waitall ${platfdir:=.}/small_platform_fatpipe.xml ${srcdir:=.}/async-waitall_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/async-waitall ${platfdir:=.}/small_platform_fatpipe.xml ${srcdir:=.}/async-waitall_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:sender@Tremblay) Send to receiver-0 Task_0
 > [  0.000000] (1:sender@Tremblay) Send to receiver-0 Task_1
 > [  0.000000] (1:sender@Tremblay) Send to receiver-0 Task_2
index 821c1d7..4027e42 100644 (file)
@@ -3,7 +3,7 @@
 p Testing the MSG_comm_waitany function
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/async-waitany ${platfdir:=.}/small_platform.xml ${srcdir:=.}/async-waitany_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/async-waitany ${platfdir:=.}/small_platform.xml ${srcdir:=.}/async-waitany_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:sender@Tremblay) Send to receiver-0 Task_0 comm_size 1000000.000000
 > [  0.000000] (1:sender@Tremblay) Send to receiver-1 Task_1 comm_size 1000000.000000
 > [  0.000000] (1:sender@Tremblay) Send to receiver-0 Task_2 comm_size 1000000.000000
index 0bd4127..b30353d 100644 (file)
@@ -1,4 +1,4 @@
-$ $SG_TEST_EXENV ${bindir:=.}/cloud-capping ${platfdir}/small_platform.xml --log=no_loc "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/cloud-capping ${platfdir}/small_platform.xml --log=no_loc "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:master_@Fafard) # 1. Put a single task on a PM. 
 > [  0.000000] (1:master_@Fafard) ### Test: with/without MSG_task_set_bound
 > [  0.000000] (1:master_@Fafard) ### Test: no bound for Task1@Fafard
index 124b61a..fce982f 100644 (file)
@@ -1,4 +1,4 @@
-$ $SG_TEST_EXENV ${bindir:=.}/cloud-migration ${platfdir}/small_platform.xml --log=no_loc "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/cloud-migration ${platfdir}/small_platform.xml --log=no_loc "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:master_@Fafard) Test: Migrate a VM with 1000 Mbytes RAM
 > [132.765801] (1:master_@Fafard) VM0 migrated: Fafard->Tremblay in 132.766 s
 > [132.765801] (1:master_@Fafard) Test: Migrate a VM with 100 Mbytes RAM
index 795fb86..b542166 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing a vm with two successive tasks
 
-$ $SG_TEST_EXENV ${bindir:=.}/cloud-simple$EXEEXT --log=no_loc ${platfdir}/small_platform.xml
+$ ${bindir:=.}/cloud-simple --log=no_loc ${platfdir}/small_platform.xml
 > [Fafard:master_:(1) 0.000000] [msg_test/INFO] ## Test 1 (started): check computation on normal PMs
 > [Fafard:master_:(1) 0.000000] [msg_test/INFO] ### Put a task on a PM
 > [Fafard:compute:(2) 0.013107] [msg_test/INFO] Fafard:compute task executed 0.0131068
index c99a8a6..160b321 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing a vm with two successive tasks
 
-$ $SG_TEST_EXENV ${bindir:=.}/cloud-two-tasks$EXEEXT ${platfdir}/small_platform.xml
+$ ${bindir:=.}/cloud-two-tasks ${platfdir}/small_platform.xml
 > [VM0:compute:(2) 0.000000] [msg_test/INFO] VM0:compute task 1 created 0
 > [Fafard:master_:(1) 0.000000] [msg_test/INFO] aTask remaining duration: 1e+09
 > [Fafard:master_:(1) 1.000000] [msg_test/INFO] aTask remaining duration: 9.23704e+08
index bcb9f7f..439de73 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing the mechanism for computing host energy consumption
 
-$ ${bindir:=.}/energy-consumption$EXEEXT ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/energy-consumption ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:dvfs_test@MyHost1) Energetic profile: 100.0:120.0:200.0, 93.0:110.0:170.0, 90.0:105.0:150.0
 > [  0.000000] (1:dvfs_test@MyHost1) Initial peak speed=1E+08 flop/s; Energy dissipated =0E+00 J
 > [  0.000000] (1:dvfs_test@MyHost1) Sleep for 10 seconds
@@ -22,7 +22,7 @@ $ ${bindir:=.}/energy-consumption$EXEEXT ${platfdir}/energy_platform.xml "--log=
 > [ 30.000000] (0:maestro@) Energy consumption of host MyHost2: 2100.000000 Joules
 > [ 30.000000] (0:maestro@) Energy consumption of host MyHost3: 3000.000000 Joules
 
-$ ${bindir:=.}/energy-consumption$EXEEXT ${platfdir}/energy_cluster.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=host/model:ptask_L07
+$ ${bindir:=.}/energy-consumption ${platfdir}/energy_cluster.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=host/model:ptask_L07
 > [  0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'ptask_L07'
 > [  0.000000] (0:maestro@) Switching to the L07 model to handle parallel tasks.
 > [  0.000000] (1:dvfs_test@MyHost1) Energetic profile: 100.0:120.0:200.0, 93.0:110.0:170.0, 90.0:105.0:150.0
index 7d47505..464869f 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing the DVFS-related functions
 
-$ ${bindir:=.}/energy-pstate$EXEEXT ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/energy-pstate ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:dvfs_test@MyHost1) Count of Processor states=3
 > [  0.000000] (1:dvfs_test@MyHost1) Current power peak=100000000.000000
 > [  0.000000] (2:dvfs_test@MyHost2) Count of Processor states=3
@@ -21,7 +21,7 @@ $ ${bindir:=.}/energy-pstate$EXEEXT ${platfdir}/energy_platform.xml "--log=root.
 > [  6.000000] (2:dvfs_test@MyHost2) Current power peak=20000000.000000
 > [  6.000000] (0:maestro@) Total simulation time: 6.000000e+00
 
-$ ${bindir:=.}/energy-pstate$EXEEXT ${platfdir}/energy_cluster.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=host/model:ptask_L07
+$ ${bindir:=.}/energy-pstate ${platfdir}/energy_cluster.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=host/model:ptask_L07
 > [  0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'ptask_L07'
 > [  0.000000] (0:maestro@) Switching to the L07 model to handle parallel tasks.
 > [  0.000000] (1:dvfs_test@MyHost1) Count of Processor states=3
index 6848fdb..2ab7b15 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ ${bindir:=.}/energy-ptask$EXEEXT ${platfdir:=.}/energy_platform.xml --energy "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/energy-ptask ${platfdir:=.}/energy_platform.xml --energy "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) Switching to the L07 model to handle parallel tasks.
 > [  0.000000] (1:test@MyHost1) First, build a classical parallel task, with 1 Gflop to execute on each node, and 10MB to exchange between each pair
 > [300.000000] (1:test@MyHost1) We can do the same with a timeout of one second enabled.
index 87cb748..8f278b2 100644 (file)
@@ -156,7 +156,6 @@ static int test_launcher(int /*argc*/, char** /*argv*/)
   test = 6;
   if (xbt_dynar_search_or_negative(tests, &test) != -1) {
     XBT_INFO("Test 6: Turn on Jupiter, assign a VM on Jupiter, launch a process inside the VM, and turn off the node");
-    MSG_process_set_data_cleanup(nullptr); // If set for test 6, cleanup handler gives double-free errors.
 
     // Create VM0
     msg_vm_t vm0 = MSG_vm_create_core(jupiter, "vm0");
index 309dbd4..ebb928c 100644 (file)
@@ -13,7 +13,7 @@ $ ${bindir}/host_on_off_processes ${platfdir}/small_platform.xml 1 --log=no_loc
 > [13.000000] [msg_test/INFO] Simulation time 13
 
 ! expect signal SIGIOT
-$ ${bindir}/host_on_off_processes ${platfdir}/small_platform.xml 2 --log=no_loc
+$ $VALGRIND_NO_LEAK_CHECK ${bindir}/host_on_off_processes ${platfdir}/small_platform.xml 2 --log=no_loc
 > [Tremblay:test_launcher:(1) 0.000000] [msg_test/INFO] Test 2:
 > [Tremblay:test_launcher:(1) 0.000000] [msg_test/INFO]   Turn off Jupiter
 > [0.000000] [simix_process/WARNING] Cannot launch actor 'process_daemon' on failed host 'Jupiter'
index 7f3119d..298dda1 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ ${bindir:=.}/io-file-remote$EXEEXT ${platfdir:=.}/storage/remote_io.xml ${srcdir:=.}/io-file-remote_d.xml "--log=root.fmt:[%10.6r]%e(%i@%5h)%e%m%n"
+$ ${bindir:=.}/io-file-remote ${platfdir:=.}/storage/remote_io.xml ${srcdir:=.}/io-file-remote_d.xml "--log=root.fmt:[%10.6r]%e(%i@%5h)%e%m%n"
 > [  0.000000] (0@     ) Init: 12/476824 MiB used/free on 'Disk1'
 > [  0.000000] (0@     ) Init: 2280/474556 MiB used/free on 'Disk2'
 > [  0.000000] (1@alice) Opened file 'c:\Windows\setupact.log'
index aa11c7b..efad219 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ ${bindir}/io-raw-storage$EXEEXT ${platfdir}/storage/storage.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir}/io-raw-storage ${platfdir}/storage/storage.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:@denise) *** Storage info on denise ***
 > [  0.000000] (1:@denise) Storage name: Disk2, mount name: c:
 > [  0.000000] (1:@denise) Storage name: Disk4, mount name: /home
index 6864d33..c5668a4 100644 (file)
@@ -3,7 +3,7 @@
 p Testing a MSG application with properties in the XML for Hosts, Links and Processes
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/platform-properties$EXEEXT ${platfdir}/prop.xml ${srcdir:=.}/platform-properties_d.xml  "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/platform-properties ${platfdir}/prop.xml ${srcdir:=.}/platform-properties_d.xml  "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:maestro@) There are 7 hosts in the environment
 > [  0.000000] (0:maestro@) Host 'host1' runs at 1000000000 flops/s
 > [  0.000000] (0:maestro@) Host 'host2' runs at 1000000000 flops/s
index 0cb5cfa..1f8df83 100644 (file)
@@ -2,7 +2,7 @@
 
 p This tests the HostLoad plugin (this allows the user to get the current load of a host and the computed flops)
 
-$ ${bindir:=.}/plugin-hostload$EXEEXT ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/plugin-hostload ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:load_test@MyHost1) Initial peak speed: 1E+08 flop/s; number of flops computed so far: 0E+00 (should be 0)
 > [  0.000000] (1:load_test@MyHost1) Sleep for 10 seconds
 > [ 10.000000] (1:load_test@MyHost1) Done sleeping 10.00s; peak speed: 1E+08 flop/s; number of flops computed so far: 0E+00 (nothing should have changed)
index 226fbdf..1808baa 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing the process daemonization feature of MSG
 
-$ $SG_TEST_EXENV ${bindir:=.}/process-daemon ${platfdir:=.}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/process-daemon ${platfdir:=.}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:worker@Boivin) Let's do some work (for 10 sec on Boivin).
 > [  0.000000] (2:daemon@Tremblay) Hello from the infinite loop
 > [  3.000000] (2:daemon@Tremblay) Hello from the infinite loop
index 3a33646..19e04ea 100644 (file)
@@ -1,5 +1,5 @@
 
-$ $SG_TEST_EXENV ${bindir:=.}/process-join$EXEEXT ${platfdir}/small_platform.xml
+$ ${bindir:=.}/process-join ${platfdir}/small_platform.xml
 > [Tremblay:master:(1) 0.000000] [msg_test/INFO] Start slave
 > [Tremblay:slave from master:(2) 0.000000] [msg_test/INFO] Slave started
 > [Tremblay:master:(1) 0.000000] [msg_test/INFO] Join the slave (timeout 2)
index f20a32d..fa1dc2d 100644 (file)
@@ -2,7 +2,7 @@
 
 p Testing a MSG_process_kill function
 
-$ $SG_TEST_EXENV ${bindir:=.}/process-kill ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/process-kill ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:killer@Tremblay) Hello!
 > [  0.000000] (2:victim@Fafard) Hello!
 > [  0.000000] (2:victim@Fafard) Suspending myself
index 4d3c96b..8f10283 100644 (file)
@@ -2,7 +2,7 @@
 
 p Test0 Process without time
 
-$ $SG_TEST_EXENV ${bindir:=.}/process-lifetime ${platfdir}/cluster_backbone.xml ${srcdir:=.}/baseline_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/process-lifetime ${platfdir}/cluster_backbone.xml ${srcdir:=.}/baseline_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:sleeper@node-0.simgrid.org) Hello! I go to sleep.
 > [ 10.000000] (1:sleeper@node-0.simgrid.org) Done sleeping.
 > [ 10.000000] (1:sleeper@node-0.simgrid.org) Exiting now (done sleeping or got killed).
@@ -10,7 +10,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/process-lifetime ${platfdir}/cluster_backbone.xml
 
 p Test1 Process with start time
 
-$ $SG_TEST_EXENV ${bindir:=.}/process-lifetime ${platfdir}/cluster_backbone.xml ${srcdir:=.}/start_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/process-lifetime ${platfdir}/cluster_backbone.xml ${srcdir:=.}/start_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:sleeper@node-0.simgrid.org) Hello! I go to sleep.
 > [  1.000000] (2:sleeper@node-1.simgrid.org) Hello! I go to sleep.
 > [  2.000000] (3:sleeper@node-2.simgrid.org) Hello! I go to sleep.
@@ -34,7 +34,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/process-lifetime ${platfdir}/cluster_backbone.xml
 p Test1 Process with kill time
 
 ! output sort
-$ $SG_TEST_EXENV ${bindir:=.}/process-lifetime ${platfdir}/cluster_backbone.xml ${srcdir:=.}/kill_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/process-lifetime ${platfdir}/cluster_backbone.xml ${srcdir:=.}/kill_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:sleeper@node-1.simgrid.org) Hello! I go to sleep.
 > [  0.000000] (2:sleeper@node-2.simgrid.org) Hello! I go to sleep.
 > [  0.000000] (3:sleeper@node-3.simgrid.org) Hello! I go to sleep.
@@ -47,7 +47,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/process-lifetime ${platfdir}/cluster_backbone.xml
 p Test2 Process with start and kill times
 
 ! output sort
-$ $SG_TEST_EXENV ${bindir:=.}/process-lifetime ${platfdir}/cluster_backbone.xml ${srcdir:=.}/start_kill_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/process-lifetime ${platfdir}/cluster_backbone.xml ${srcdir:=.}/start_kill_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:sleeper@node-0.simgrid.org) Hello! I go to sleep.
 > [  1.000000] (2:sleeper@node-1.simgrid.org) Hello! I go to sleep.
 > [  2.000000] (3:sleeper@node-2.simgrid.org) Hello! I go to sleep.
index 05e95a2..8b1530e 100644 (file)
@@ -3,7 +3,7 @@
 p Testing the migration feature of MSG
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/process-migration ${platfdir:=.}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/process-migration ${platfdir:=.}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:emigrant@Jacquelin) I'll look for a new job on another machine ('Boivin') where the grass is greener.
 > [  0.000000] (1:emigrant@Boivin) Yeah, found something to do
 > [  0.000000] (2:policeman@Boivin) Wait at the checkpoint.
index a7f41fc..172df6c 100644 (file)
@@ -3,7 +3,7 @@
 p Testing the suspend/resume feature of MSG
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/process-suspend ${platfdir:=.}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/process-suspend ${platfdir:=.}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:dream_master@Boivin) Let's create a lazy guy.
 > [  0.000000] (2:Lazy@Boivin) Nobody's watching me ? Let's go to sleep.
 > [  0.000000] (1:dream_master@Boivin) Let's wait a little bit...
index 458bfed..897e61a 100644 (file)
@@ -1,5 +1,5 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/process-yield ${platfdir}/small_platform_fatpipe.xml ${srcdir:=.}/process-yield_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/process-yield ${platfdir}/small_platform_fatpipe.xml ${srcdir:=.}/process-yield_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:yielder@Tremblay) I yielded 10 times. Goodbye now!
 > [  0.000000] (2:yielder@Ruby) I yielded 15 times. Goodbye now!
index 19886bd..8af98f9 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env tesh
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/task-priority$EXEEXT ${platfdir}/small_platform.xml  ${srcdir:=.}/task-priority_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/task-priority ${platfdir}/small_platform.xml  ${srcdir:=.}/task-priority_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:test@Fafard) Hello! Running a task of size 7.6296e+07 with priority 1
 > [  0.000000] (2:test@Fafard) Hello! Running a task of size 7.6296e+07 with priority 2
 > [  1.500000] (2:test@Fafard) Goodbye now!
index c3c3790..2dcf6e5 100644 (file)
@@ -3,7 +3,7 @@
 p Testing the migration feature of S4U
 
 ! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/actor-migration ${platfdir:=.}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/actor-migration ${platfdir:=.}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:emigrant@Jacquelin) I'll look for a new job on another machine ('Boivin') where the grass is greener.
 > [  0.000000] (1:emigrant@Boivin) Yeah, found something to do
 > [  0.000000] (2:policeman@Boivin) Wait at the checkpoint.
index fe95a5b..235dfcf 100644 (file)
@@ -1,4 +1,4 @@
-$ $SG_TEST_EXENV ${bindir:=.}/cloud-interrupt-migration ${platfdir}/small_platform.xml --log=no_loc "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ ${bindir:=.}/cloud-interrupt-migration ${platfdir}/small_platform.xml --log=no_loc "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:master_@Fafard) Start the migration of VM0 from Fafard to Tremblay
 > [  2.000000] (1:master_@Fafard) Wait! change my mind, shutdown VM0. This ends the migration
 > [ 10.000000] (1:master_@Fafard) Start again the migration of VM0 from Fafard to Tremblay
index f12ea29..89994b3 100644 (file)
@@ -1,4 +1,4 @@
-$ ./concurrent_rw$EXEEXT ${platfdir}/storage/storage.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
+$ ./concurrent_rw ${platfdir}/storage/storage.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
 > [  0.000000] (host@bob) process 1 is writing!
 > [  0.000000] (host@bob) process 2 is writing!
 > [  0.000000] (host@bob) process 3 is writing!
index 14fe8b0..6d097a8 100644 (file)
@@ -1,4 +1,4 @@
-$ ./storage_client_server$EXEEXT ${platfdir}/storage/storage.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
+$ ./storage_client_server ${platfdir}/storage/storage.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n"
 > [  0.000000] (server@alice) *** Storage info on alice ***
 > [  0.000000] (server@alice)  Storage name: Disk2, mount name: c:
 > [  0.000000] (server@alice)          Free size: 534479374867 bytes
index 53fb168..54cc945 100644 (file)
@@ -90,8 +90,8 @@ ADD_TEST(tesh-simdag-full-links01    ${CMAKE_BINARY_DIR}/teshsuite/simdag/basic-
 ADD_TEST(tesh-simdag-full-links02    ${CMAKE_BINARY_DIR}/teshsuite/simdag/basic-parsing-test/basic-parsing-test ${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/platforms/two_clusters_one_name.xml FULL_LINK)
 ADD_TEST(tesh-simdag-one-link-g5k    ${CMAKE_BINARY_DIR}/teshsuite/simdag/basic-parsing-test/basic-parsing-test ${CMAKE_HOME_DIRECTORY}/examples/platforms/g5k.xml ONE_LINK)
 
-if(enable_debug AND NOT enable_memcheck)
-  # these tests need assertions. Exclude them from memcheck, as they normally die, leaving lots of unfree'd objects
+if(enable_debug)
+  # these tests need assertions
   ADD_TESH(tesh-parser-bogus-symmetric         --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/simdag/flatifier --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/flatifier ${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/flatifier/bogus_two_hosts_asymetric.tesh)
   ADD_TESH(tesh-parser-bogus-missing-gw        --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/simdag/flatifier --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/flatifier ${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/flatifier/bogus_missing_gateway.tesh)
   ADD_TESH(tesh-parser-bogus-disk-attachment   --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/simdag/flatifier --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/flatifier ${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/flatifier/bogus_disk_attachment.tesh)
index f51b30f..ae49cdc 100644 (file)
@@ -1,5 +1,5 @@
 ! expect signal SIGABRT
-$ ${bindir:=.}/flatifier ../platforms/bogus_disk_attachment.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
+$ $VALGRIND_NO_LEAK_CHECK ${bindir:=.}/flatifier ../platforms/bogus_disk_attachment.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
 > [  0.000000] [0:maestro@] Parse error at ../platforms/bogus_disk_attachment.xml:19: Unable to attach storage cdisk: host plouf does not exist.
 > [  0.000000] [0:maestro@] Exiting now
index 832004a..20f2519 100644 (file)
@@ -1,12 +1,12 @@
 ! expect signal SIGABRT
-$ ${bindir:=.}/flatifier ../platforms/bogus_missing_src_gateway.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
+$ $VALGRIND_NO_LEAK_CHECK ${bindir:=.}/flatifier ../platforms/bogus_missing_src_gateway.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
 > [  0.000000] [0:maestro@] Parse error at ../platforms/bogus_missing_src_gateway.xml:14: zoneRoute gw_src='nod-cluster_router.cluster.us' does name a node. Existing netpoints: 
 > 'node-1.cluster.us','node-2.cluster.us','node-3.cluster.us','node-4.cluster.us','node-cluster_router.cluster.us','noeud-1.grappe.fr','noeud-2.grappe.fr','noeud-3.grappe.fr','noeud-4.grappe.fr','noeud-grappe_router.grappe.fr'
 > [  0.000000] [0:maestro@] Exiting now
 
 ! expect signal SIGABRT
-$ ${bindir:=.}/flatifier ../platforms/bogus_missing_dst_gateway.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
+$ $VALGRIND_NO_LEAK_CHECK ${bindir:=.}/flatifier ../platforms/bogus_missing_dst_gateway.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
 > [  0.000000] [0:maestro@] Parse error at ../platforms/bogus_missing_dst_gateway.xml:14: zoneRoute gw_dst='neud-grappe_router.grappe.fr' does name a node. Existing netpoints: 
 > 'node-1.cluster.us','node-2.cluster.us','node-3.cluster.us','node-4.cluster.us','node-cluster_router.cluster.us','noeud-1.grappe.fr','noeud-2.grappe.fr','noeud-3.grappe.fr','noeud-4.grappe.fr','noeud-grappe_router.grappe.fr'
index 8a77381..27535d7 100644 (file)
@@ -1,4 +1,4 @@
 ! expect signal SIGABRT
-$ ${bindir:=.}/flatifier ../platforms/bogus_two_hosts_asymetric.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n" --log=no_loc
+$ $VALGRIND_NO_LEAK_CHECK ${bindir:=.}/flatifier ../platforms/bogus_two_hosts_asymetric.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n" --log=no_loc
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
 > [  0.000000] [0:maestro@] The route between alice and bob already exists (Rq: routes are symmetrical by default).
index 5bfeacd..90d20da 100644 (file)
@@ -1,5 +1,5 @@
 #!/usr/bin/env tesh
-$ ${bindir:=.}/flatifier$EXEEXT ../platforms/one_cluster.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
+$ ${bindir:=.}/flatifier ../platforms/one_cluster.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
 > <?xml version='1.0'?>
 > <!DOCTYPE platform SYSTEM "https://simgrid.org/simgrid.dtd">
@@ -134,7 +134,7 @@ $ ${bindir:=.}/flatifier$EXEEXT ../platforms/one_cluster.xml "--log=root.fmt:[%1
 > </AS>
 > </platform>
 
-$ ${bindir:=.}/flatifier$EXEEXT ../platforms/one_cluster_multicore.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
+$ ${bindir:=.}/flatifier ../platforms/one_cluster_multicore.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
 > <?xml version='1.0'?>
 > <!DOCTYPE platform SYSTEM "https://simgrid.org/simgrid.dtd">
@@ -268,7 +268,7 @@ $ ${bindir:=.}/flatifier$EXEEXT ../platforms/one_cluster_multicore.xml "--log=ro
 > </AS>
 > </platform>
 
-$ ${bindir:=.}/flatifier$EXEEXT ../platforms/host_attributes.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
+$ ${bindir:=.}/flatifier ../platforms/host_attributes.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
 > <?xml version='1.0'?>
 > <!DOCTYPE platform SYSTEM "https://simgrid.org/simgrid.dtd">
@@ -302,7 +302,7 @@ $ ${bindir:=.}/flatifier$EXEEXT ../platforms/host_attributes.xml "--log=root.fmt
 > </AS>
 > </platform>
 
-$ ${bindir:=.}/flatifier$EXEEXT ../platforms/link_attributes.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
+$ ${bindir:=.}/flatifier ../platforms/link_attributes.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
 > <?xml version='1.0'?>
 > <!DOCTYPE platform SYSTEM "https://simgrid.org/simgrid.dtd">
@@ -320,7 +320,7 @@ $ ${bindir:=.}/flatifier$EXEEXT ../platforms/link_attributes.xml "--log=root.fmt
 > </AS>
 > </platform>
 
-$ ${bindir:=.}/flatifier$EXEEXT ../platforms/three_hosts_non_symmetric_route.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
+$ ${bindir:=.}/flatifier ../platforms/three_hosts_non_symmetric_route.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
 > <?xml version='1.0'?>
 > <!DOCTYPE platform SYSTEM "https://simgrid.org/simgrid.dtd">
@@ -363,7 +363,7 @@ $ ${bindir:=.}/flatifier$EXEEXT ../platforms/three_hosts_non_symmetric_route.xml
 > </AS>
 > </platform>
 
-$ ${bindir:=.}/flatifier$EXEEXT ../platforms/two_clusters.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
+$ ${bindir:=.}/flatifier ../platforms/two_clusters.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
 > <?xml version='1.0'?>
 > <!DOCTYPE platform SYSTEM "https://simgrid.org/simgrid.dtd">
@@ -498,7 +498,7 @@ $ ${bindir:=.}/flatifier$EXEEXT ../platforms/two_clusters.xml "--log=root.fmt:[%
 > </AS>
 > </platform>
 
-$ ${bindir:=.}/flatifier$EXEEXT ../platforms/two_hosts_multi_hop.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
+$ ${bindir:=.}/flatifier ../platforms/two_hosts_multi_hop.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
 > <?xml version='1.0'?>
 > <!DOCTYPE platform SYSTEM "https://simgrid.org/simgrid.dtd">
@@ -525,7 +525,7 @@ $ ${bindir:=.}/flatifier$EXEEXT ../platforms/two_hosts_multi_hop.xml "--log=root
 > </AS>
 > </platform>
 
-$ ${bindir:=.}/flatifier$EXEEXT ../platforms/two_hosts_one_link.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
+$ ${bindir:=.}/flatifier ../platforms/two_hosts_one_link.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
 > <?xml version='1.0'?>
 > <!DOCTYPE platform SYSTEM "https://simgrid.org/simgrid.dtd">
@@ -550,7 +550,7 @@ $ ${bindir:=.}/flatifier$EXEEXT ../platforms/two_hosts_one_link.xml "--log=root.
 > </AS>
 > </platform>
 
-$ ${bindir:=.}/flatifier$EXEEXT ${srcdir:=.}/examples/platforms/bypassASroute.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
+$ ${bindir:=.}/flatifier ${srcdir:=.}/examples/platforms/bypassASroute.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
 > <?xml version='1.0'?>
 > <!DOCTYPE platform SYSTEM "https://simgrid.org/simgrid.dtd">
@@ -684,7 +684,7 @@ $ ${bindir:=.}/flatifier$EXEEXT ${srcdir:=.}/examples/platforms/bypassASroute.xm
 > </AS>
 > </platform>
 
-$ ${bindir:=.}/flatifier$EXEEXT ${srcdir:=.}/examples/platforms/cluster_torus.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
+$ ${bindir:=.}/flatifier ${srcdir:=.}/examples/platforms/cluster_torus.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
 > <?xml version='1.0'?>
 > <!DOCTYPE platform SYSTEM "https://simgrid.org/simgrid.dtd">
index 26919a1..35216ce 100644 (file)
@@ -32,9 +32,7 @@ if (NOT enable_memcheck AND NOT enable_address_sanitizer)
     SET_TESH_PROPERTIES(stack-overflow "ucontext;raw;boost" WILL_FAIL true)
   endif()
 endif()
-if (NOT enable_memcheck)
-  ADD_TESH_FACTORIES(generic-simcalls "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/simix/generic-simcalls --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/simix/generic-simcalls generic-simcalls.tesh)
-endif()
+ADD_TESH_FACTORIES(generic-simcalls "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/simix/generic-simcalls --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/simix/generic-simcalls generic-simcalls.tesh)
 
 foreach (factory raw thread boost ucontext)
   string (TOUPPER have_${factory}_contexts VARNAME)
index df6b5f5..143b479 100644 (file)
@@ -8,7 +8,7 @@ static int myvalue = 0;
 static void test_opts(int* argc, char **argv[]){
   int found = 0;
   static struct option long_options[] = {
-  {"long",     no_argument, 0,  0 },
+  {(char*)"long",     no_argument, 0,  0 },
   {0,         0,                 0,  0 }
   };
   while (1) {
index 00de44c..0a76bed 100644 (file)
@@ -15,7 +15,7 @@ static void test_opts(int* argc, char **argv[]){
   int found = 0;
   int option_index = 0;
   static struct option long_options[] = {
-  {"long",     no_argument, 0,  0 },
+  {(char*)"long",     no_argument, 0,  0 },
   {0,         0,                 0,  0 }
   };
   while (1) {
index 2a98cd4..d8f6818 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/lmm_usage
+$ ${bindir:=.}/lmm_usage
 > [0.000000] [surf_test/INFO] ***** Test 1 (Max-Min)
 > [0.000000] [surf_test/INFO] ***** Test 1 (Lagrange - Vegas)
 > [0.000000] [surf_test/INFO] ***** Test 1 (Lagrange - Reno)
index dbc5167..0cd7580 100644 (file)
@@ -3,7 +3,7 @@
 ! timeout 300
 ! expect return 0
 ! output sort
-$ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench big 1
+$ ${bindir:=.}/maxmin_bench big 1
 > Starting 0: (807)
 > Starting to solve(812)
 > 1x One shot execution time for a total of 2000 constraints, 2000 variables with 96 active constraint each, concurrency in [32,288] and max concurrency share 2
index 25c131e..a7f2d7f 100644 (file)
@@ -3,7 +3,7 @@
 ! timeout 50
 ! expect return 0
 ! output sort
-$ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
+$ ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] Setting selective_update_active flag to 0
 > [0.000000]: [surf_maxmin/DEBUG] Active constraints : 100
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '98' usage: 13.060939 remaining: 3.166833 concurrency: 7<=8<=10
index 40449aa..9ec6403 100644 (file)
@@ -3,7 +3,7 @@
 ! timeout 10
 ! expect return 0
 ! output sort
-$ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench small  10 test
+$ ${bindir:=.}/maxmin_bench small  10 test
 > [0.000000]: [surf_maxmin/DEBUG] Setting selective_update_active flag to 0
 > [0.000000]: [surf_maxmin/DEBUG] Active constraints : 10
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '9' usage: 4.703796 remaining: 7.082917 concurrency: 2<=2<=-1
index 1dbf13b..29fbac9 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/surf_usage ${platfdir}/two_hosts_profiles.xml
+$ ${bindir:=.}/surf_usage ${platfdir}/two_hosts_profiles.xml
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'CM02'
 > [0.000000] [surf_test/INFO] actionA state: SURF_ACTION_RUNNING
index eb98a91..935bb53 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/surf_usage2 ${platfdir}/two_hosts_profiles.xml
+$ ${bindir:=.}/surf_usage2 ${platfdir}/two_hosts_profiles.xml
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'CM02'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
 > [0.200000] [surf_test/INFO] Next Event : 0.2
index 3d96f66..4db584b 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env tesh
 
 p Check different log thresholds
-$ $SG_TEST_EXENV ${bindir:=.}/log_usage "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
+$ ${bindir:=.}/log_usage "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Test with the settings ''
 > [  0.000000] [0:maestro@] val=2
 > [  0.000000] [0:maestro@] false alarm!
@@ -22,7 +22,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/log_usage "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m
 > [  0.000000] [0:maestro@] false alarm!
 
 p Check the "file" log appender
-$ $SG_TEST_EXENV ${bindir:=.}/log_usage "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n" --log=root.app:file:${bindir:=.}/log_usage.log
+$ ${bindir:=.}/log_usage "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n" --log=root.app:file:${bindir:=.}/log_usage.log
 $ cat ${bindir:=.}/log_usage.log
 > [  0.000000] [0:maestro@] Test with the settings ''
 > [  0.000000] [0:maestro@] val=2
@@ -44,7 +44,7 @@ $ cat ${bindir:=.}/log_usage.log
 > [  0.000000] [0:maestro@] false alarm!
 
 p Check the "rollfile" log appender
-$ $SG_TEST_EXENV ${bindir:=.}/log_usage "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n" --log=root.app:rollfile:500:${bindir:=.}/log_usage.log
+$ ${bindir:=.}/log_usage "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n" --log=root.app:rollfile:500:${bindir:=.}/log_usage.log
 $ cat ${bindir:=.}/log_usage.log
 > [  0.000000] [0:maestro@] val=2
 > [  0.000000] [0:maestro@] false alarm!
@@ -63,7 +63,7 @@ $ cat ${bindir:=.}/log_usage.log
 >                    
 
 p Check the "splitfile" log appender
-$ $SG_TEST_EXENV ${bindir:=.}/log_usage "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n" --log=root.app:splitfile:500:${bindir:=.}/log_usage_%.log
+$ ${bindir:=.}/log_usage "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n" --log=root.app:splitfile:500:${bindir:=.}/log_usage_%.log
 $ cat ${bindir:=.}/log_usage_0.log
 > [  0.000000] [0:maestro@] Test with the settings ''
 > [  0.000000] [0:maestro@] val=2
index c9f7f1e..113c106 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/log_usage "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
+$ ${bindir:=.}/log_usage "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Test with the settings ''
 > [  0.000000] [0:maestro@] val=2
 > [  0.000000] [0:maestro@] false alarm!
index bc95e83..58b392b 100644 (file)
@@ -1,3 +1,3 @@
 #!/usr/bin/env tesh
 
-$ $SG_TEST_EXENV ${bindir:=.}/parmap_bench 4 0.25 --log=parmap_bench.thres:warning
+$ ${bindir:=.}/parmap_bench 4 0.25 --log=parmap_bench.thres:warning
index b856d19..8f61acb 100644 (file)
@@ -612,7 +612,6 @@ set(MC_SRC
   src/mc/sosp/mc_checkpoint.cpp
   src/mc/sosp/mc_snapshot.hpp
   src/mc/sosp/mc_snapshot.cpp
-  src/mc/sosp/mc_page_snapshot.cpp
   
   src/mc/AddressSpace.hpp
   src/mc/Frame.hpp
index 3d7d59f..203ddf4 100644 (file)
@@ -42,7 +42,7 @@ endif()
 # Compute the dependencies of SimGrid
 #####################################
 # search for dlopen
-if("${CMAKE_SYSTEM_NAME}" MATCHES "kFreeBSD|Linux")
+if("${CMAKE_SYSTEM_NAME}" MATCHES "kFreeBSD|Linux|SunOS")
   find_library(DL_LIBRARY dl)
 endif()
 mark_as_advanced(DL_LIBRARY)
index d4956fa..167d5fe 100644 (file)
@@ -22,7 +22,7 @@ option(enable_debug                 "Turn this off to remove all debug messages
 
 # Optional modules
 ###
-option(enable_documentation "Whether to produce documentation" on)
+option(enable_documentation "Whether to produce documentation" off)
 
 option(enable_ns3            "Whether ns3 model is activated." off)
 option(enable_java           "Whether the Java bindings are activated." off)
index f587730..e85211a 100644 (file)
@@ -21,6 +21,7 @@ IF(enable_memcheck)
     if(enable_memcheck_xml)
       SET(TESH_WRAPPER ${TESH_WRAPPER}\ --xml=yes\ --xml-file=memcheck_test_%p.memcheck\ --child-silent-after-fork=yes\ )
     endif()
+    set(TESH_OPTION ${TESH_OPTION} --setenv VALGRIND_NO_LEAK_CHECK=--leak-check=no\ --show-leak-kinds=none)
 
 #    message(STATUS "tesh wrapper: ${TESH_WRAPPER}")
 
index 4f16abd..eb33cb0 100755 (executable)
@@ -30,4 +30,4 @@ while (defined(my $arg = shift)) {
 # map { print "$_ " } @argv;
 # print "\n";
 
-system @argv;
+exec @argv;
index b99c787..8a8d26b 100755 (executable)
@@ -33,8 +33,6 @@ while(defined($line=<SH_LIGNE>))
                $line =~ s/\$\{srcdir\:\=\.\}/./g;
                $line =~ s/\(/\\(/g;
                $line =~ s/\)/\\)/g;
-               $line =~ s/\$SG_TEST_EXENV//g;
-               $line =~ s/\$EXEEXT//g;
                $line =~ s/^\$\ */.\//g;
                $line =~ s/^.\/lua/lua/g;
                $line =~ s/^.\/ruby/ruby/g;
diff --git a/tools/docker/Dockerfile.tuto-mc b/tools/docker/Dockerfile.tuto-mc
new file mode 100644 (file)
index 0000000..888c7dd
--- /dev/null
@@ -0,0 +1,21 @@
+# Base image 
+FROM debian:testing
+
+# - Install SimGrid's dependencies 
+# - Compile and install SimGrid itself.
+# - Remove everything that was installed, and re-install what's needed by the SimGrid libraries before the Gran Final Cleanup
+# - Keep g++ gcc gfortran as any MC user will use (some of) them
+RUN apt update && apt -y upgrade && \
+    apt install -y g++ gcc git valgrind gfortran libboost-dev libboost-all-dev cmake dpkg-dev libunwind-dev libdw-dev libelf-dev libevent-dev && \
+    mkdir /source/ && cd /source && git clone --depth=1 https://framagit.org/simgrid/simgrid.git simgrid.git && \
+    cd simgrid.git && \
+    cmake -DCMAKE_INSTALL_PREFIX=/usr/ -Denable_model-checking=ON -Denable_documentation=OFF -Denable_java=OFF -Denable_smpi=ON -Denable_compile_optimizations=ON . && \
+    make -j4 install \
+    mkdir debian/ && touch debian/control && dpkg-shlibdeps --ignore-missing-info lib/*.so -llib/ -O/tmp/deps && \
+    apt remove -y git valgrind libboost-dev libboost-all-dev cmake dpkg-dev libunwind-dev libdw-dev libelf-dev libevent-dev && \
+    apt install `sed -e 's/shlibs:Depends=//' -e 's/([^)]*)//g' -e 's/,//g' /tmp/deps` && rm /tmp/deps && \
+    apt autoremove -y && apt autoclean && apt clean
+    
+# The build and dependencies are not cleaned in this image since it's it's highly experimental so far    
+#    git reset --hard master && git clean -dfx && \
+
index 06cc7a7..9d6fbd6 100644 (file)
@@ -5,6 +5,7 @@ default:
        @echo "   make unstable   -> build the git version of SimGrid (with SMPI, w/o MC)"
        @echo "   make tuto-s4u   -> build all what you need to take the S4U tutorial"
        @echo "   make tuto-smpi  -> build all what you need to take the SMPI tutorial"
+       @echo "   make tuto-mc    -> build the git version of SimGrid (with SMPI and MC)"
        @echo "   make all        -> build all but stable (ie, build-deps unstable tuto-s4u tuto-smpi)"
        @echo "   make push       -> push all images to the cloud"
        @echo "All our images are based on debian:testing"
@@ -14,7 +15,7 @@ all: build-deps unstable tuto-s4u tuto-smpi
 
 stable:
        export last_tag=`wget https://framagit.org/simgrid/simgrid/tags 2>/dev/null -O - | grep /simgrid/simgrid/tags/v | head -n1  | sed 's/[^>]*>//' | sed 's/<.*//'`; \
-       export url=`wget https://framagit.org/simgrid/simgrid/tags/$${last_tag} 2>/dev/null -O - | grep SimGrid- | perl -pe 's/.*?<li><a href="//' | sed 's/tar.gz.*/tar.gz/'` ;\
+       export url=`wget https://framagit.org/simgrid/simgrid/tags/$${last_tag} 2>/dev/null -O - | grep SimGrid- | perl -pe 's/.*?<a href="//' | sed 's/tar.gz.*/tar.gz/'` ;\
        echo URL:$${url} ; \
        docker build -f Dockerfile.stable \
                 --build-arg DLURL=$${url} \
@@ -37,6 +38,13 @@ build-deps:
                 $(DOCKER_EXTRA) \
                  . | tee > build-deps.log
 
+tuto-mc:
+       docker build -f Dockerfile.tuto-mc \
+                -t simgrid/tuto-mc:latest \
+                 -t simgrid/tuto-mc:$$(date --iso-8601) \
+                $(DOCKER_EXTRA) \
+                 . | tee > tuto-mc.log
+
 build-deps-stable:
        docker build -f Dockerfile.build-deps-stable \
                 -t simgrid/build-deps-stable:latest \
@@ -64,3 +72,4 @@ push:
        docker push simgrid/unstable
        docker push simgrid/tuto-s4u
        docker push simgrid/tuto-smpi
+       docker push simgrid/tuto-mc
index e05907f..0e66fd6 100755 (executable)
@@ -26,7 +26,7 @@ fi
 
 # usage: die status message...
 die () {
-  local status=${1:-1}
+  status=${1:-1}
   shift
   [ $# -gt 0 ] || set -- "Error - Halting"
   echo "$@" >&2
@@ -163,7 +163,7 @@ echo "XX   pwd: "$(pwd)
 echo "XX"
 
 cmake -G"$GENERATOR" -Denable_documentation=OFF $WORKSPACE
-make dist -j$NUMBER_OF_PROCESSORS
+make dist -j $NUMBER_OF_PROCESSORS
 SIMGRID_VERSION=$(cat VERSION)
 
 echo "XX"
@@ -211,7 +211,7 @@ cmake -G"$GENERATOR" ${INSTALL:+-DCMAKE_INSTALL_PREFIX=$INSTALL} \
 #  -Denable_lua=$(onoff test "$build_mode" != "DynamicAnalysis") \
 set +x
 
-make -j$NUMBER_OF_PROCESSORS VERBOSE=1 tests
+make -j $NUMBER_OF_PROCESSORS VERBOSE=1 tests
 
 echo "XX"
 echo "XX Run the tests"
index 306b191..04d327c 100755 (executable)
@@ -50,8 +50,80 @@ rm consoleText
 
 
 echo "<br>Description of the nodes - Automatically updated by project_description.sh script - Don't edit here<br><br>
-<table id="configuration-matrix"> 
-<tr class="matrix-row">  <td class="matrix-header" style="min-width:75px">Name of the Builder</td><td class="matrix-header" style="min-width:75px">OS</td><td class="matrix-header" style="min-width:75px">Compiler</td><td class="matrix-header" style="min-width:75px">Boost</td><td class="matrix-header" style="min-width:75px">Java</td><td class="matrix-header" style="min-width:75px">Cmake</td><td class="matrix-header" style="min-width:50px">NS3</td><td class="matrix-header" style="min-width:50px">Python</td></tr>"
+<script>
+function compareVersion(v1, v2) {
+    if (typeof v1 !== 'string') return false;
+    if (typeof v2 !== 'string') return false;
+    v1 = v1.split('.');
+    v2 = v2.split('.');
+    const k = Math.min(v1.length, v2.length);
+    for (let i = 0; i < k; ++ i) {
+        v1[i] = parseInt(v1[i], 10);
+        v2[i] = parseInt(v2[i], 10);
+        if (v1[i] > v2[i]) return 1;
+        if (v1[i] < v2[i]) return -1;        
+    }
+    return v1.length == v2.length ? 0: (v1.length < v2.length ? -1 : 1);
+}</script>
+<script>
+function sortTable(n, type) {
+  var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
+  table = document.getElementById('configuration-matrix');
+  switching = true;
+  //Set the sorting direction to ascending:
+  dir = 'asc'; 
+  /*Make a loop that will continue until
+  no switching has been done:*/
+  while (switching) {
+    //start by saying: no switching is done:
+    switching = false;
+    rows = table.rows;
+    /*Loop through all table rows (except the
+    first, which contains table headers):*/
+    for (i = 1; i < (rows.length - 1); i++) {
+      //start by saying there should be no switching:
+      shouldSwitch = false;
+      /*Get the two elements you want to compare,
+      one from current row and one from the next:*/
+      x = rows[i].getElementsByTagName('TD')[n];
+      y = rows[i + 1].getElementsByTagName('TD')[n];
+      /*check if the two rows should switch place,
+      based on the direction, asc or desc:*/
+      if (dir == 'asc') {
+        if(type == 'version'){
+          shouldSwitch = (compareVersion(x.innerHTML.toLowerCase(), y.innerHTML.toLowerCase()) > 0);
+        }else{
+          shouldSwitch = (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase());
+        }
+      } else if (dir == 'desc') {
+        if(type == 'version'){
+          shouldSwitch = (compareVersion(x.innerHTML.toLowerCase(), y.innerHTML.toLowerCase()) < 0);
+        }else{
+          shouldSwitch = (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase());
+        }
+      }
+      if (shouldSwitch)
+        break;
+    }
+    if (shouldSwitch) {
+      /*If a switch has been marked, make the switch
+      and mark that a switch has been done:*/
+      rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
+      switching = true;
+      //Each time a switch is done, increase this count by 1:
+      switchcount ++;      
+    } else {
+      /*If no switching has been done AND the direction is 'asc',
+      set the direction to 'desc' and run the while loop again.*/
+      if (switchcount == 0 && dir == 'asc') {
+        dir = 'desc';
+        switching = true;
+      }
+    }
+  }
+}</script>
+<table id=configuration-matrix> 
+<tr class=matrix-row>  <td class=matrix-header style=min-width:75px onclick='sortTable(0);'>Name of the Builder</td><td class=matrix-header style=min-width:75px onclick='sortTable(1);'>OS</td><td class=matrix-header style=min-width:75px onclick='sortTable(2);'>Compiler</td><td class=matrix-header style=min-width:75px onclick=\"sortTable(3, 'version');\">Boost</td><td class=matrix-header style=min-width:75px onclick=\"sortTable(4,'version');\">Java</td><td class=matrix-header style=min-width:75px onclick=\"sortTable(5,'version');\">Cmake</td><td class=matrix-header style=min-width:50px onclick='sortTable(6);'>NS3</td><td class=matrix-header style=min-width:50px onclick='sortTable(7);'>Python</td></tr>"
 
 for node in "${nodes[@]}"
 do