Arnaud Giersch [Wed, 3 Mar 2021 09:47:45 +0000 (10:47 +0100)]
std::runtime error takes a const&.
Augustin Degomme [Wed, 3 Mar 2021 11:55:21 +0000 (12:55 +0100)]
These tests were missing mpi_finalize call (hence some leaks).
Augustin Degomme [Wed, 3 Mar 2021 11:54:48 +0000 (12:54 +0100)]
change message a bit
Augustin Degomme [Wed, 3 Mar 2021 11:54:33 +0000 (12:54 +0100)]
mpi_comm_self was cleaned after mpi finalization during actor deletion, which was annoying (after leaks check).
Have it done at MPI_Finalize level.
Augustin Degomme [Tue, 2 Mar 2021 22:36:56 +0000 (23:36 +0100)]
Add simple example using smpi_execute_* calls inside MPI code to simulate computation.
This could double as a basic MPI example, as we are missing one, I think.
Augustin Degomme [Tue, 2 Mar 2021 15:00:07 +0000 (16:00 +0100)]
add errhandlers support for mpi_comm_world
As this communicator is actually shared, every process was overriding the errhandler, leading to using the same for every process, and leaking the others.
Augustin Degomme [Tue, 2 Mar 2021 14:58:38 +0000 (15:58 +0100)]
add leak checking for info and errhandlers
Arnaud Giersch [Tue, 2 Mar 2021 19:54:07 +0000 (20:54 +0100)]
Rename mc_base.h -> .hpp (it's C++ only anyway).
Arnaud Giersch [Tue, 2 Mar 2021 15:24:04 +0000 (16:24 +0100)]
Const for methods.
Arnaud Giersch [Tue, 2 Mar 2021 15:20:54 +0000 (16:20 +0100)]
Cosmetic rename.
get_actor_string -> get_actor_dot_label
get_actor_string2 -> get_actor_string
Frederic Suter [Tue, 2 Mar 2021 00:30:45 +0000 (01:30 +0100)]
Simplify namespaces
Frederic Suter [Mon, 1 Mar 2021 23:54:36 +0000 (00:54 +0100)]
cleanups
Frederic Suter [Mon, 1 Mar 2021 23:25:28 +0000 (00:25 +0100)]
cosmetics
Frederic Suter [Mon, 1 Mar 2021 22:49:48 +0000 (23:49 +0100)]
add core_count setter
Arnaud Giersch [Tue, 2 Mar 2021 15:13:45 +0000 (16:13 +0100)]
Auto + std::make_unique.
Arnaud Giersch [Tue, 2 Mar 2021 14:57:09 +0000 (15:57 +0100)]
Uncomment.
Arnaud Giersch [Tue, 2 Mar 2021 14:26:06 +0000 (15:26 +0100)]
Reduce code duplication.
Arnaud Giersch [Tue, 2 Mar 2021 13:58:47 +0000 (14:58 +0100)]
Protect against buffer overflow.
Arnaud Giersch [Tue, 2 Mar 2021 13:45:21 +0000 (14:45 +0100)]
Make Transition::textual a std::string.
Arnaud Giersch [Fri, 26 Feb 2021 20:01:53 +0000 (21:01 +0100)]
Restore Rvalue references for xbt::Exception.
This was lost in commit
1361e008419329de33e4c92a6ad96621d40a9c40
and I don't remember any reason for that.
Exceptions are always built with temporaries, an d moving them should avoid
unnecessary copies.
Arnaud Giersch [Tue, 2 Mar 2021 10:52:21 +0000 (11:52 +0100)]
Uncomment debug message.
Arnaud Giersch [Tue, 2 Mar 2021 10:30:59 +0000 (11:30 +0100)]
Make field private (fixme--).
Arnaud Giersch [Tue, 2 Mar 2021 10:09:32 +0000 (11:09 +0100)]
Use std::copy.
Arnaud Giersch [Tue, 2 Mar 2021 09:41:28 +0000 (10:41 +0100)]
Type bool for boolean values.
Arnaud Giersch [Mon, 1 Mar 2021 22:36:32 +0000 (23:36 +0100)]
Remove some useless nested code blocks.
Arnaud Giersch [Mon, 1 Mar 2021 20:37:02 +0000 (21:37 +0100)]
Using C++ strings.
Arnaud Giersch [Mon, 1 Mar 2021 16:21:04 +0000 (17:21 +0100)]
Use xbt::string for MC hostnames.
Arnaud Giersch [Mon, 1 Mar 2021 14:37:49 +0000 (15:37 +0100)]
Kill useless function.
Arnaud Giersch [Mon, 1 Mar 2021 14:31:09 +0000 (15:31 +0100)]
Use defined type alias.
Arnaud Giersch [Mon, 1 Mar 2021 12:07:29 +0000 (13:07 +0100)]
Fix code generation (broken call to inspector_->is_pending), and reindent.
Frederic Suter [Mon, 1 Mar 2021 14:19:44 +0000 (15:19 +0100)]
fix ns3
Frederic Suter [Mon, 1 Mar 2021 13:14:55 +0000 (14:14 +0100)]
Consider Link latency as an optional parameter
Frederic Suter [Mon, 1 Mar 2021 09:34:58 +0000 (10:34 +0100)]
more fluent version
Frederic Suter [Mon, 1 Mar 2021 09:24:24 +0000 (10:24 +0100)]
Rollback a little in programmatic description of disks
- add Required fields (w.r.t. the DTD) to the create_disk method
- leave the setters to enable changes of mind or dynamic stuff between
create and seal (TODO: add a state and some asserts)
- Resources always have a name so add it in the ctor
Arnaud Giersch [Mon, 1 Mar 2021 10:23:03 +0000 (11:23 +0100)]
Fix usage string.
Arnaud Giersch [Mon, 1 Mar 2021 09:47:19 +0000 (10:47 +0100)]
Deprecated simcall_mc_random.
Maybe this can be dropped immediately?.
Arnaud Giersch [Fri, 26 Feb 2021 14:23:07 +0000 (15:23 +0100)]
Make global variables 'const'.
Arnaud Giersch [Fri, 26 Feb 2021 13:55:09 +0000 (14:55 +0100)]
A few less global variables.
Martin Quinson [Mon, 1 Mar 2021 00:59:12 +0000 (01:59 +0100)]
Don't require MC dependencies when building w/o MC
Martin Quinson [Mon, 1 Mar 2021 00:46:38 +0000 (01:46 +0100)]
Fix non-MC builds
Martin Quinson [Mon, 1 Mar 2021 00:31:41 +0000 (01:31 +0100)]
Fix make distcheck :-(
Martin Quinson [Mon, 1 Mar 2021 00:30:18 +0000 (01:30 +0100)]
Missing file
Martin Quinson [Mon, 1 Mar 2021 00:24:41 +0000 (01:24 +0100)]
remove a workaround for a bug removed in previous commit
Inspector::to_string() was sometimes called for simcalls w/o inspectors.
Martin Quinson [Sun, 28 Feb 2021 23:38:00 +0000 (00:38 +0100)]
Set the textual representation of a transition before executing it
This way it will correctly be set if the App aborts or fails during that execution.
Also, don't use the execution path that is reserved to simcalls with
observers `mc_model_checker->simcall_to_string()` in any case.
Prefer the path that works with old simcalls too `Api::request_to_string()`
Martin Quinson [Sun, 28 Feb 2021 23:24:04 +0000 (00:24 +0100)]
Split inspector::is_pending() in two logical parts
- get_max_consider() returns how many times this simcall should be considered.
- prepare() does what needs to be done for the simcall to be fired in user space
This removes the RPC from MC to App to get this information:
- The value of get_max_consider() is copied in the simcall structure
when the AppSide prepares to wait for new instructions from the MC.
- prepare() was already called by handle_simcall() on AppSide, to
obey trace replays.
Less RPC is faster and less eror prone.
Martin Quinson [Sun, 28 Feb 2021 23:19:41 +0000 (00:19 +0100)]
Not sure why to_string is sometimes called when there is no inspector, but survive this bug
Martin Quinson [Sun, 28 Feb 2021 20:32:27 +0000 (21:32 +0100)]
Rename ActorState::consider() and State::add_interleaved_set() as {ActorState,State}::mark_todo()
Martin Quinson [Sun, 28 Feb 2021 22:04:56 +0000 (23:04 +0100)]
Fix build on clang
Martin Quinson [Sun, 28 Feb 2021 09:40:40 +0000 (10:40 +0100)]
objectification of MC simcall achieved -- many tests still failing
* MC_RANDOM is now a regular simcall, made observable by its SimcallInspector
- remove it from simcall.in and remove all relevant elements
- Other simcalls that are visible from MC (ie, that are generated by
simcall.py and are handled in MC with big switch cases) are not
modified at all, even if the patch reindent them since this execution
path is now in a new conditionnal.
* SimcallInspectors are used everywhere where a specific handling was made for MC_RANDOM
- In MC_state_choose_request_for_process, we get the next value to
be picked by MC_random (or the next comm to be picked by waitany)
depending on the amount of times we consider this simcall (ie, on the
amount of decision forks we did on that transition while exploring the
state space.
This operation was not named before, it's now called is_pending()
because it returns whether we should do another decision fork from
that transition. Maybe is_branching() would be a better name.
Or consider() since its parameter is times_considered, and there
is one call location where its return value is ignored (when we
replay all transitions on the path leading to the state we want to
restore). But there is already a mc::ActorState::consider() where
the Checker express interest in a given simcall.
- The two other generic methods of SimcallInspectors are to_string()
to get a textual representation of the transtion (eg to display the
backtrace leading to the property violation), and dot_label() to
get a label that can be used in dot(1). This is useful to get a
visual representation of the state space.
- There is a visible() method too, but I guess it's useless: Only
visible simcall will be given an inspector. Or it will be more
complex, because differing model checking algorithms will be
interested in differing sets of simcalls (so visible() should be
Checker-dependend). Leave it as is for now.
- RandomSimcall is also implementing a get_value() method that
allows its implementation. At the end of the day, the connexion
between the actor side (out of the kernel) and the model-checker side
is made with this code:
auto observer = new simgrid::mc::RandomSimcall(SIMIX_process_self(), min, max);
return simgrid::kernel::actor::simcall([observer] { return observer->get_value(); }, observer);
The RandomSimcall object is really making the link between the two worlds.
- When we will convert the other simcalls, something will be needed
to handle transition dependency. Since MC_RANDOM is never dependent
with anything, this is left unhandled in SimcallInspector for now.
One problem at a time.
* SimcallInspectors live in the AppSide while these information are
needed in the ModelChecker side. So the network protocol was
extended to allow the Modelchecker to get this information thru RPC.
This is not satisfactory because it probably slows things down, even
if it's hard to say for sure because many tests just deadlock with it.
When the AppSide is dead, you'd better not ask for a RPC to collect
information about the simcalls that lead to the issue.
I extended the State::Transition object (that is used to both replay
a trace leading to a state I want to restore and to display the
backtrace that lead to a violation) to include the textual
representation of the transitions, to not do a RPC to the dead
application on violation.
But when the application abort(), I seem to have a stack corruption
on the app side or something. And debugging the verified application
is made very difficult by the Dwarf inspector that prevents the
verification from starting if the subprocess is not compiled in one
segment only (valgrind violates this rule). Plus valgrind has a
subprocess itself, probably defeating the checkpoint/restore
mechanism. Maybe I should try the Sanitizers.
* A better approach (if we fail to fix the curreny design) could be to
pre-compute on AppSide all information that can be extracted from
the inspectors, and copy it over to the CheckerSide once per
scheduling round. That would speed things up, and ensure that there
is no RPC after the death of the application. That should be done in
place of MC_process_refresh_simix_actor_dynar() that copies some
(less useful) information over.
Martin Quinson [Sun, 28 Feb 2021 09:35:55 +0000 (10:35 +0100)]
Merge branch 'master' of framagit.org:simgrid/simgrid
Martin Quinson [Sat, 27 Feb 2021 22:18:48 +0000 (23:18 +0100)]
Extend xbt_stringify_args up to 25 arguments
Martin Quinson [Sat, 27 Feb 2021 22:17:23 +0000 (23:17 +0100)]
Welcome to modernity
Frederic Suter [Fri, 26 Feb 2021 15:00:18 +0000 (16:00 +0100)]
extend example with another disk
Frederic Suter [Fri, 26 Feb 2021 14:59:58 +0000 (15:59 +0100)]
allow for programmatic creation of a disk
Martin Quinson [Fri, 26 Feb 2021 09:46:34 +0000 (10:46 +0100)]
typo
Arnaud Giersch [Fri, 26 Feb 2021 09:16:01 +0000 (10:16 +0100)]
Need at least ns-3.28.
Arnaud Giersch [Fri, 26 Feb 2021 08:09:59 +0000 (09:09 +0100)]
Declare function 'static' (and fix picky builders).
Arnaud Giersch [Thu, 25 Feb 2021 20:07:58 +0000 (21:07 +0100)]
Update ASan suppressions for clang.
Martin Quinson [Thu, 25 Feb 2021 23:26:45 +0000 (00:26 +0100)]
Fix make distcheck
Martin Quinson [Thu, 25 Feb 2021 22:57:21 +0000 (23:57 +0100)]
ns3: Fix build when compile warnings are enabled
Martin Quinson [Thu, 25 Feb 2021 22:51:49 +0000 (23:51 +0100)]
Merge branch 'master' of framagit.org:simgrid/simgrid
Martin Quinson [Thu, 25 Feb 2021 22:40:12 +0000 (22:40 +0000)]
Merge branch 'master' into 'master'
Add option to delay wifi zone start time
See merge request simgrid/simgrid!47
Frederic Suter [Thu, 25 Feb 2021 16:17:19 +0000 (17:17 +0100)]
missing override
Frederic Suter [Thu, 25 Feb 2021 09:38:07 +0000 (10:38 +0100)]
Make progress towards a programmatic creation of disks
Frederic Suter [Thu, 25 Feb 2021 09:38:07 +0000 (10:38 +0100)]
see what can be done with method chaining in disk creation
Frederic Suter [Thu, 25 Feb 2021 08:25:11 +0000 (09:25 +0100)]
Change way Resources are created: Empty ctor and setters
Martin Quinson [Wed, 24 Feb 2021 20:01:37 +0000 (21:01 +0100)]
Remove some cruft
Frederic Suter [Wed, 24 Feb 2021 17:13:41 +0000 (18:13 +0100)]
AS->Zone
Frederic Suter [Wed, 24 Feb 2021 16:47:32 +0000 (17:47 +0100)]
a bit more method chaining in the internals
Arnaud Giersch [Wed, 24 Feb 2021 10:49:59 +0000 (11:49 +0100)]
Reduce scope for variable.
agougeon [Wed, 24 Feb 2021 08:08:14 +0000 (09:08 +0100)]
add wifi zone option to delay nodes start time
agougeon [Wed, 24 Feb 2021 07:53:00 +0000 (08:53 +0100)]
Merge branch 'master' of framagit.org:simgrid/simgrid
Arnaud Giersch [Wed, 24 Feb 2021 07:23:44 +0000 (08:23 +0100)]
[sonar] Variable 'j' is not part of the loop control.
Arnaud Giersch [Wed, 24 Feb 2021 07:13:21 +0000 (08:13 +0100)]
[sonar] Merge 'if' statements.
Arnaud Giersch [Tue, 23 Feb 2021 22:45:00 +0000 (23:45 +0100)]
On failure, try again with longer sleep duration.
Arnaud Giersch [Tue, 23 Feb 2021 18:50:23 +0000 (19:50 +0100)]
Use access modifier to disallow direct deletion. Remove superfluous boolean.
Arnaud Giersch [Tue, 23 Feb 2021 13:43:18 +0000 (14:43 +0100)]
Define getter/setter for Exception::value.
Arnaud Giersch [Tue, 23 Feb 2021 13:39:11 +0000 (14:39 +0100)]
Drop unused 'value' argument from THROW/THROWF.
Arnaud Giersch [Tue, 23 Feb 2021 11:35:56 +0000 (12:35 +0100)]
[smpi] Make Group::range{incl,excl} simpler.
Arnaud Giersch [Sat, 20 Feb 2021 11:01:56 +0000 (12:01 +0100)]
[smpi] Use a std::unique_ptr for f2c_lookup_.
Arnaud Giersch [Sat, 20 Feb 2021 10:27:14 +0000 (11:27 +0100)]
[smpi] Prefer range-based for loop.
Arnaud Giersch [Sat, 20 Feb 2021 10:02:23 +0000 (11:02 +0100)]
[smpi] Unused #define.
Arnaud Giersch [Mon, 22 Feb 2021 15:38:06 +0000 (16:38 +0100)]
Define members and constructors in subclasses, where they belong.
Arnaud Giersch [Mon, 22 Feb 2021 13:53:22 +0000 (14:53 +0100)]
Update .gitignore.
Frederic Suter [Mon, 22 Feb 2021 08:45:51 +0000 (09:45 +0100)]
remove last basic simdag test. redundant with one of the ptask_L07 tests
Frederic Suter [Mon, 22 Feb 2021 08:19:53 +0000 (09:19 +0100)]
remove tests that are redundant with examples/cpp/*-dependent
Arnaud Giersch [Mon, 22 Feb 2021 12:56:20 +0000 (13:56 +0100)]
Rename teshsuite/models/{ptask_L07/* => ptask_L07_usage/*}.
Rationale: avoid confusion with src/surf/ptask_L07.cpp in coverage measures.
Arnaud Giersch [Mon, 22 Feb 2021 12:48:57 +0000 (13:48 +0100)]
Delete binary file.
Arnaud Giersch [Mon, 22 Feb 2021 10:33:39 +0000 (11:33 +0100)]
Rename include/xbt/{future.hpp => promise.hpp}.
Rationale: avoid confusion with include/simgrid/kernel/future.hpp in coverage measures.
Arnaud Giersch [Mon, 22 Feb 2021 10:16:30 +0000 (11:16 +0100)]
Rename: include/simgrid/smpi/{replay.hpp => smpi_replay.hpp}.
Rationale: avoid confusion with include/xbt/replay.hpp in coverage measures.
Arnaud Giersch [Mon, 22 Feb 2021 10:14:31 +0000 (11:14 +0100)]
Cosmetics: fix filename in comment.
Arnaud Giersch [Mon, 22 Feb 2021 09:04:45 +0000 (10:04 +0100)]
Return 0 on failure.
Frederic Suter [Sat, 20 Feb 2021 18:02:53 +0000 (19:02 +0100)]
Convert another test
Arnaud Giersch [Sat, 20 Feb 2021 10:41:41 +0000 (11:41 +0100)]
Drop simgrid::xbt::demangle and use boost::core::demangle instead.
Arnaud Giersch [Fri, 19 Feb 2021 22:59:51 +0000 (23:59 +0100)]
Default constructor is used by default.
Martin Quinson [Sat, 20 Feb 2021 09:24:51 +0000 (10:24 +0100)]
typo
Arnaud Giersch [Fri, 19 Feb 2021 13:10:14 +0000 (14:10 +0100)]
Define and use Exception::rethrow_nested to rethrow a nested exception of the same type.
Arnaud Giersch [Fri, 19 Feb 2021 21:28:45 +0000 (22:28 +0100)]
Factorize declarations for exceptions.
Arnaud Giersch [Fri, 19 Feb 2021 14:02:39 +0000 (15:02 +0100)]
Functions are not overridden anymore.
This was changed in commit
cbc68013e8f1008e88a8cefb1e60b7813cf8a409
(Change a bit F2C handling).
Arnaud Giersch [Fri, 19 Feb 2021 13:51:24 +0000 (14:51 +0100)]
Typo.