Gabriel Corona [Fri, 13 Feb 2015 14:34:16 +0000 (15:34 +0100)]
[mc] Do not use strerror(), not thread-safe
Gabriel Corona [Fri, 13 Feb 2015 12:49:35 +0000 (13:49 +0100)]
[mc] Remote support for MC_deadlock_check() using MC_MESSAGE_DEADLOCK_CHECK IPC message
Gabriel Corona [Thu, 12 Feb 2015 15:03:51 +0000 (16:03 +0100)]
Merge master into mc-process
Gabriel Corona [Thu, 12 Feb 2015 10:21:37 +0000 (11:21 +0100)]
[mc] Make an option for file descriptor snapshot (off by default)
This option is currently not supported in client/server mode.
Gabriel Corona [Tue, 10 Feb 2015 14:52:09 +0000 (15:52 +0100)]
[mc] Mark some issues as fixed
Marion Guthmuller [Tue, 10 Feb 2015 15:02:06 +0000 (16:02 +0100)]
model-checker : intermediate backtracking enabled if _sg_mc_checkpoint > 0
Gabriel Corona [Tue, 10 Feb 2015 13:37:10 +0000 (14:37 +0100)]
[mc] Server side symbol evaluation
This is currently only handled for symbols represented as variables
(opposed to symbols represented as callbacks): in order to evaluate
the callback we will have to ask the MCed to evaluate the callback for
us and send us the result back.
Marion Guthmuller [Tue, 10 Feb 2015 14:04:34 +0000 (15:04 +0100)]
model-checker : memory leak
Gabriel Corona [Tue, 10 Feb 2015 11:32:34 +0000 (12:32 +0100)]
[mc] Register symbols as pointers in the examples
Gabriel Corona [Tue, 10 Feb 2015 11:19:20 +0000 (12:19 +0100)]
[mc] Extend xbt_propositional_symbols
Add support for:
* general callbacks with a `void*` argument (the `data` field);
* as an optimisation, a simple pointer to a variable can be passed in
the `data` field (this can be used in order to enable the MCer to
fetch the data directly from the MCed memory without trigerring a
MCed-side callback);
* a callback function used to free the `data` field.
Gabriel Corona [Tue, 10 Feb 2015 08:41:53 +0000 (09:41 +0100)]
[mc] Cleanup heap switching code
Marion Guthmuller [Mon, 9 Feb 2015 18:39:18 +0000 (19:39 +0100)]
model-checker : revalidate tesh
Marion Guthmuller [Mon, 9 Feb 2015 18:38:55 +0000 (19:38 +0100)]
model-checker : cosmetics
Marion Guthmuller [Mon, 9 Feb 2015 18:38:39 +0000 (19:38 +0100)]
model-checker : non-recursive liveness algorithm
Marion Guthmuller [Mon, 9 Feb 2015 18:37:14 +0000 (19:37 +0100)]
model-checker : intermediate backtracking with model-check/checkpoint cfg flag
Marion Guthmuller [Mon, 9 Feb 2015 18:31:41 +0000 (19:31 +0100)]
model-checker : communications determinism with visited state equality reduction
Gabriel Corona [Fri, 6 Feb 2015 14:55:48 +0000 (15:55 +0100)]
[mc] Add MCer handling for MC_MESSAGE_IGNORE_HEAP and MC_MESSAGE_UNIGNORE_HEAP
Gabriel Corona [Fri, 6 Feb 2015 13:58:15 +0000 (14:58 +0100)]
(wip) Move the MCed public API in the same file
Gabriel Corona [Fri, 6 Feb 2015 13:26:20 +0000 (14:26 +0100)]
[mc] New message for stack_area
Gabriel Corona [Fri, 6 Feb 2015 12:55:18 +0000 (13:55 +0100)]
[mc] Flag global variables in mc_ignore as belonging to the MCer
Gabriel Corona [Fri, 6 Feb 2015 11:58:46 +0000 (12:58 +0100)]
[mc] Communicate MC_remove_ignore_heap to the remote model-checker
Gabriel Corona [Fri, 6 Feb 2015 11:08:12 +0000 (12:08 +0100)]
[mc] Do not call malloc_no_memset in mc_snapshot
The main code should not called mmalloc/mmfree/mmrealloc directly
because it will fail in client/server mode: the server does not have
separate heap and will choke on this.
Replace mmalloc_no_memset with malloc_no_memset which does the right
thing:
* either call mmalloc_no_memset;
* or call malloc.
Gabriel Corona [Fri, 6 Feb 2015 10:29:56 +0000 (11:29 +0100)]
[mc] Implement remote support for MC_ignore
Gabriel Corona [Fri, 6 Feb 2015 09:52:48 +0000 (10:52 +0100)]
[mc] Move mc_model_checker in its own .c file
Gabriel Corona [Thu, 5 Feb 2015 14:03:51 +0000 (15:03 +0100)]
[mc] Communication of heap_area_to_ignore to the remote MCer
Gabriel Corona [Thu, 5 Feb 2015 14:03:36 +0000 (15:03 +0100)]
[mc] Define one struct per MC message type
Martin Quinson [Tue, 3 Feb 2015 22:07:52 +0000 (23:07 +0100)]
New property: watt_off to denote the disipation when the host is off
Gabriel Corona [Tue, 3 Feb 2015 14:44:28 +0000 (15:44 +0100)]
[mc] Move MC_init_pid outside of mc_server
Gabriel Corona [Tue, 3 Feb 2015 14:36:02 +0000 (15:36 +0100)]
[mc] Remove some functions in mc_server
Gabriel Corona [Tue, 3 Feb 2015 10:26:44 +0000 (11:26 +0100)]
[mc] Basic infrastructure for a real model-checker process
The model checker process communicates with the model-checked
application using socket (and wait). Currently it waits for the MCed
process initialisation and fetch its system state, DWARF information,
etc but does not do anything else.
The previous (standalone) mode is currently used by default. The new
behaviour is triggered with the SIMGRID_MC_MODE=server
environment. The idea is to keep the standalone version at least as
long as the new version is not stable/working.
Martin Quinson [Tue, 3 Feb 2015 08:50:56 +0000 (09:50 +0100)]
cosmetics in example and revalidate all energy examples
Martin Quinson [Tue, 3 Feb 2015 00:58:49 +0000 (01:58 +0100)]
partially fix the energy public API (massive renames ongoing)
Martin Quinson [Tue, 3 Feb 2015 00:17:09 +0000 (01:17 +0100)]
Fix energy plugin wrt idle time
- Count the last idle period when the host is destroyed
- More informative debug messages in the plugin
- More informative messages in the example (to make computations
manually enforcable)
Gabriel Corona [Mon, 2 Feb 2015 13:37:28 +0000 (14:37 +0100)]
Enable C++11
Gabriel Corona [Fri, 30 Jan 2015 12:51:07 +0000 (13:51 +0100)]
[mc] Remove useless code in ~DWARF test
Gabriel Corona [Mon, 19 Jan 2015 14:54:13 +0000 (15:54 +0100)]
[mc] Remote unwinding support
The contexts are still read directly from the current process memory
however.
Martin Quinson [Tue, 27 Jan 2015 07:03:45 +0000 (08:03 +0100)]
fix a test by hardcoding the used machines
I changed the platform recently to test properties with clusters
Martin Quinson [Mon, 26 Jan 2015 20:57:09 +0000 (21:57 +0100)]
rename the property used by the energy plugin for clarity
Martin Quinson [Mon, 26 Jan 2015 20:56:21 +0000 (21:56 +0100)]
reduce the amount of cruft loaded in the jarfile (don't include doxygen sources)
Martin Quinson [Mon, 26 Jan 2015 17:07:04 +0000 (18:07 +0100)]
oops, remove verbose debug output
Martin Quinson [Mon, 26 Jan 2015 09:03:53 +0000 (10:03 +0100)]
even more informative error message
Martin Quinson [Sun, 25 Jan 2015 23:26:52 +0000 (00:26 +0100)]
more informative (?) error message
Martin Quinson [Sun, 25 Jan 2015 22:57:06 +0000 (23:57 +0100)]
test that the hosts get the cluster's properties
Martin Quinson [Sun, 25 Jan 2015 22:54:30 +0000 (23:54 +0100)]
properly pass the cluster's properties to the created hosts
Martin Quinson [Sun, 25 Jan 2015 21:56:36 +0000 (22:56 +0100)]
more informative error message in some obscure error settings
Martin Quinson [Wed, 14 Jan 2015 21:24:50 +0000 (22:24 +0100)]
cosmetics in comments
Gabriel Corona [Fri, 23 Jan 2015 09:11:15 +0000 (10:11 +0100)]
[mc] Make a copy of the libunwind context when snapshoting the stacks
The libunwind cursors used in `mc_snapshot_stack_t` were referencing
the real/live libunwind contexts: this is wrong because those contexts
change with the simulated application. Instead, we need to take a copy
of the context.
Christian Heinrich [Thu, 22 Jan 2015 11:34:25 +0000 (12:34 +0100)]
Modified error messages when creating CPUs for more verbosity.
As 0 may be assumed as the default powerPeak value (if no value specified),
the error message should point out that the power attribute may have been
forgotten. This was added in this commit.
suter [Tue, 20 Jan 2015 20:26:01 +0000 (21:26 +0100)]
more verbose output following a weird crash on my laptop
Christian Heinrich [Mon, 19 Jan 2015 15:42:26 +0000 (16:42 +0100)]
Updated lua README file to reflect current state of SG
- File small_platform.xml was moved to a different location
- Added full example for execution; without it, it doesn't work.
Gabriel Corona [Fri, 16 Jan 2015 13:10:13 +0000 (14:10 +0100)]
[mc] Add some comments
Gabriel Corona [Fri, 9 Jan 2015 15:04:25 +0000 (16:04 +0100)]
[mc] Create a separate simgrid-mc program
We create a separate program for the model-checker. The goal is that
this program will:
- prepare the environment for the child/main process (environment
variables, maybe LD_PRELOAD a library, pass file descriptors);
- hold all the model-checker state;
- communicate with the child process;
- handle some part of the snapshoting/restoration logic;
- handle the state comparison logic.
Currently it only enables the custom heap in the child process.
Gabriel Corona [Fri, 9 Jan 2015 10:18:26 +0000 (11:18 +0100)]
[mc] Remove remaining bits on hardcoded object list
Martin Quinson [Tue, 6 Jan 2015 19:58:37 +0000 (20:58 +0100)]
Merge branch 'master' of scm.gforge.inria.fr:/gitroot/simgrid/simgrid
Christian Heinrich [Tue, 6 Jan 2015 18:10:28 +0000 (19:10 +0100)]
Fixed cmake/doxygen errors on old systems.
cmake 2.8.7 on Ubuntu 12.04 LTS does not support the
DOXYGEN_VERSION variable, hence documentation can never be
built as this variable is required.
The added code checks whether the DOXYGEN_EXECUTABLE
is set and executes doxygen --version itself; hence
making this variable available.
Tested on Ubuntu 12.04 LTS.
Augustin Degomme [Tue, 6 Jan 2015 14:14:01 +0000 (15:14 +0100)]
Change order of initialization.
If the cpumodel is constructed before msg init is called, a log message is sent without proper init
This meant undefined behavior, and in one particular case the wrong locale being selected, the message used a comma as a separator instead of a dot.
There was a big hint in the comment just before : "do not do anything before the msg.init call !"
Augustin Degomme [Mon, 5 Jan 2015 17:03:53 +0000 (18:03 +0100)]
Change include order for smpi tests/examples to avoid conflicts
This include folder is the one where our mpi.h file lives.
This file is provided by various other libraries.
When another simgrid include folder contains another mpi.h file from another library, build is broken
This trouble was seen on a freebsd system with graphviz installed, which added an include path in /usr/local/include, where there was a mpi.h file from mpich
This commit forces the one from smpi to be the first and only mpi.h file examples/tests do use
Augustin Degomme [Mon, 5 Jan 2015 15:14:12 +0000 (16:14 +0100)]
avoid breaking with recent freebsd that implement this flag (as the comment said)
This should help other bsds as well
Martin Quinson [Mon, 22 Dec 2014 22:04:09 +0000 (23:04 +0100)]
kepler->luna
Martin Quinson [Mon, 22 Dec 2014 22:03:23 +0000 (23:03 +0100)]
Ensure that MSG_host_self() works from maestro context
Gabriel Corona [Fri, 19 Dec 2014 10:56:52 +0000 (11:56 +0100)]
[mc] Add some FIXMEs for cross-process support
Gabriel Corona [Fri, 19 Dec 2014 08:51:16 +0000 (09:51 +0100)]
[mc] Cross-process support for MC_ignore
Gabriel Corona [Thu, 18 Dec 2014 15:03:03 +0000 (16:03 +0100)]
[mc] Implements privatization support for MC_process_read
This is currently needed for cross-process MC in order to read the
heap state.
Gabriel Corona [Tue, 16 Dec 2014 12:06:37 +0000 (13:06 +0100)]
[mc] Abstract the process and a snapshot types with a address_space superclass
Add a `address_space`, superclass of `process` and `snapshot`.
In order to do this, the contract of MC_process_read and
MC_snapshot_read has been uniformized:
* the order of arguments has been harmonized;
* a new flag MC_ADDRESS_SPACE_READ_FLAGS_LAZY is used to avoid copy
when the data is in the current memory;
* MC_NO_PROCESS_INDEX has been renamed into MC_PROCESS_INDEX_MISSING;
* MC_ANY_PROCESS_INDEX has been renamed into MC_PROCESS_INDEX_ANY;
* MC_PROCESS_INDEX_DISABLED is used to access the raw address space
(without privatisation support);
* `const void*` is used instead of `void*` when it possible.
Soem cleanup things are still to be done:
* remove special NULL handling;
* add support for SMPI privatization in the process object.
Gabriel Corona [Tue, 16 Dec 2014 11:05:14 +0000 (12:05 +0100)]
[mc] More comments for mc_dwarf_execute_expression()
Give some basic explanation about the DWARF operations.
Gabriel Corona [Tue, 16 Dec 2014 10:34:38 +0000 (11:34 +0100)]
[mc] Add more information about mc_dwarf_register_to_libunwind()
Augustin Degomme [Mon, 15 Dec 2014 21:00:27 +0000 (22:00 +0100)]
avoid word being recognized as special by doxygen
Augustin Degomme [Mon, 15 Dec 2014 20:52:40 +0000 (21:52 +0100)]
typos
Augustin Degomme [Mon, 15 Dec 2014 20:48:56 +0000 (21:48 +0100)]
update doc about privatization .. \nThis was not updated yet. The option was documented in options.doc, so this my be a duplication of information
Augustin Degomme [Fri, 12 Dec 2014 16:59:19 +0000 (17:59 +0100)]
fix tesh
Augustin Degomme [Fri, 12 Dec 2014 16:57:10 +0000 (17:57 +0100)]
requalify teshes for vm migration
Augustin Degomme [Fri, 12 Dec 2014 16:29:08 +0000 (17:29 +0100)]
update changelog
Augustin Degomme [Fri, 12 Dec 2014 16:27:42 +0000 (17:27 +0100)]
doc update for new appenders
Augustin Degomme [Fri, 12 Dec 2014 15:46:01 +0000 (16:46 +0100)]
Patch by F.Chaix : add two "new" log appender methods : split and roll
split will create new files when a specified size is reached
roll will overwrite the file when this size is reached
example syntax is : --log=root.appender:splitfile:10000:myfilename_%.txt
The % is a wildcard that will be replaced by the number of the file. If no % is present, it will be at the end
Gabriel Corona [Thu, 11 Dec 2014 12:14:32 +0000 (13:14 +0100)]
[mc] Support for reading heap state from another process
Martin Quinson [Fri, 12 Dec 2014 12:57:29 +0000 (13:57 +0100)]
more documentation about the simcall mechanism
Gabriel Corona [Thu, 11 Dec 2014 13:51:39 +0000 (14:51 +0100)]
[mc] Fix error handling in MC_process{read,write}
Gabriel Corona [Tue, 9 Dec 2014 14:29:16 +0000 (15:29 +0100)]
[mc] Access memory from another process
The goal is to be able to move MC in a separate process which should
be more robust and easier to develop:
* avoid using two heaps (which is combersome);
* avoid weird interactions bewteen the MC and the application;
* use optimisation for the whole MC process;
* avoid the stack-cleaner for the whole MC process.
The functions MC_process_read and MC_process_write are defined to
abstract memory access:
* when the target process is the current processs, they call
`memcpy`;
* otherwise they call `read` or `write` on `/proc/$pid/mem` (on newer
kernels, `process_vm_readv` and `process_vm_writev`) could be used.
A lot of bits are missing such as:
* access to `std_heap` is currently not process-aware (the current
process is used);
* access to SIMIX layer from MC;
* communcation/synchronisation between the processes;
* …
Limitations:
* for the per-page/chunked snapshot the current implementation uses
an extra copy (and one syscall per page), we can do better than
this.
Augustin Degomme [Wed, 10 Dec 2014 13:25:01 +0000 (14:25 +0100)]
(try to) avoid looping forever, temporarily.
This value was 10 before, and was set to 3 recently, but weirdly this caused vm migration simulations to loop forever.
It works with an infinite timeout, but the message is lost with a few values (1,2 ,3, 6, 9 were tested and failed, other ones up to 13 at least do succeed), while succeeding with other ones (after a few hundred timeouts, so this seems to be working)
So if an MSG expert sees this and can find the problem here ..
Test should still fail with this patch, but just because teshes were not requalified yet
Augustin Degomme [Wed, 10 Dec 2014 09:30:42 +0000 (10:30 +0100)]
Fix windows build (this is now used from the java library)
Marion Guthmuller [Wed, 10 Dec 2014 12:39:16 +0000 (13:39 +0100)]
fix dot output with file descriptor checkpoint/restore
Augustin Degomme [Tue, 9 Dec 2014 15:37:00 +0000 (16:37 +0100)]
Put a 300 seconds timeout on each test with ctest
This should really be enough (the default was 1500...)
Augustin Degomme [Tue, 9 Dec 2014 09:46:18 +0000 (10:46 +0100)]
Fix build
Some vm tests are still broken and some are looping, they need to be fixed
Gabriel Corona [Tue, 9 Dec 2014 12:15:38 +0000 (13:15 +0100)]
[mc] Enable the custom mm malloc only in MC
We can do better in the future: we can avoid using the main mm malloc
in many cases even for MC.
Gabriel Corona [Tue, 9 Dec 2014 11:17:18 +0000 (12:17 +0100)]
[mm] Allow to disable the mm based `malloc` at runtime
The goal is to enable the mm based `malloc` only when needed and fall
back to the (more efficient) builtin/next implementation when it is
not needed:
* run instrospection-less jobs without it;
* whene the MC and the application are in different processes, the
MC will be able to run with the standard `malloc` and the
application will use mm.
As malloc is needed very early in the application initialisation, an
environment variable is used to change the behaviour.
Gabriel Corona [Tue, 9 Dec 2014 10:21:49 +0000 (11:21 +0100)]
[mc] Remove redundant typedefs
Clang complains about typedef redefinitions in pre-C11 mode.
Gabriel Corona [Tue, 9 Dec 2014 08:16:22 +0000 (09:16 +0100)]
[mc] Optimise most of XBT
degomme [Mon, 8 Dec 2014 22:37:07 +0000 (23:37 +0100)]
bashism -- (fix https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=772329 )
Adrien Lebre [Mon, 8 Dec 2014 17:14:47 +0000 (18:14 +0100)]
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
Gabriel Corona [Mon, 8 Dec 2014 13:48:47 +0000 (14:48 +0100)]
[mc] Optimise all the MC compilation units
Gabriel Corona [Fri, 5 Dec 2014 15:05:50 +0000 (16:05 +0100)]
[mc] Multiple .so support for region snapshots
The region snapshoting logic can handle a variable number of .so
files:
* add more informations to the snapshot regions,
* the type (heap, library/executable);
* the correspoding library/executable;
* the type of storage (dense/flat, chunked/sparse or privatised)
and the type-specific variables are defined in an enum
(variant/tagged enum).
* SMPI privatisation snapshot regions are stored as children of a
parent snapshot region
Limitation:
* we might want to use a more modular/extensible approach OO for the
snapshot region storage type instead of variant-based approach;
* SMPI can currently only handle privatisation for the local
variables of the executable so this is only supported in the MC as
well for this reason but otherwise the MC is ready to support the
SMPI privatisation of libraries.
Christian Heinrich [Mon, 8 Dec 2014 12:38:34 +0000 (13:38 +0100)]
Fixed return values for several MPI_WIN functions
(statements had to be wrapped in else-clauses)
Adrien Lebre [Mon, 8 Dec 2014 09:20:23 +0000 (10:20 +0100)]
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
Adrien Lebre [Mon, 8 Dec 2014 09:20:12 +0000 (10:20 +0100)]
Few temporary debug messages - adrien
Augustin Degomme [Sat, 6 Dec 2014 15:05:38 +0000 (16:05 +0100)]
Add a mutex to lock access to the SMPI mailboxes when a message is posted
Should avoid race condition, while keeping isolation from SIMIX
Augustin Degomme [Sat, 6 Dec 2014 02:00:14 +0000 (03:00 +0100)]
Revert "Avoid using simcalls here, as by descheduling the process, we could misplace some messages in mailboxes, and end up deadlocking."
This reverts commit
63ba498484d4fcfc706be1e514d7fedbc6c9f4be.
Gabriel Corona [Fri, 5 Dec 2014 14:50:56 +0000 (15:50 +0100)]
[mc] Multiple .so support in MC_ignore_local_variable()
Gabriel Corona [Thu, 4 Dec 2014 15:03:20 +0000 (16:03 +0100)]
[mc] Basic support for more other libraries than libsimgrid.so
Augustin Degomme [Fri, 5 Dec 2014 13:59:20 +0000 (14:59 +0100)]
activate mpich3 tests for post/wait/start/complete RMA calls
Augustin Degomme [Fri, 5 Dec 2014 13:51:37 +0000 (14:51 +0100)]
Add MPI_Win_post, MPI_Win_start, MPI_Win_complete, and MPI_Win_wait support.
This is the second (out of 3) of the classic MPI RMA synchronization methods.
This version is naive and may not be what real MPI lib do, as the standard lets the implementer chose the behavior of theses calls.