Martin Quinson [Sun, 27 Feb 2022 17:33:06 +0000 (18:33 +0100)]
simix simplification: no need to marshal generic parameters when all what you have is a pointer std::function<void()>
Martin Quinson [Sun, 27 Feb 2022 17:03:44 +0000 (18:03 +0100)]
simix simplification: no need for a template here
Martin Quinson [Sun, 27 Feb 2022 16:46:37 +0000 (17:46 +0100)]
Kill popping_bodies.cpp
Martin Quinson [Sun, 27 Feb 2022 15:49:10 +0000 (16:49 +0100)]
monkey-workers: reduce the amount of simcalls during reboots
Martin Quinson [Sun, 27 Feb 2022 14:42:04 +0000 (15:42 +0100)]
Revert "OOP is good, too"
This reverts commit
f4925bd65c467da9862149984960de961af0d6cc, that
breaks a java test (java_cloud_masterworker) in a way that is
particularly hard to debug. The JVM is not exactly valgrind-friendly.
Just do some small cosmetics in this area instead.
Martin Quinson [Sun, 27 Feb 2022 10:04:54 +0000 (11:04 +0100)]
Introduce the SimGrid Chaos Monkey
See the tools/simgrid-monkey script and its comments for more info.
Martin Quinson [Sun, 27 Feb 2022 09:23:47 +0000 (10:23 +0100)]
allow to chain some setters on actors
Martin Quinson [Sun, 27 Feb 2022 09:21:45 +0000 (10:21 +0100)]
cosmetics (sg4 namespace, comments, log channel)
Martin Quinson [Sat, 26 Feb 2022 12:30:14 +0000 (13:30 +0100)]
Kill popping_accessors.hpp
Martin Quinson [Fri, 25 Feb 2022 22:41:30 +0000 (23:41 +0100)]
Try to make timeouted semaphores robust to actors death
Unfortunately, I cannot test it right now (the test is not written,
plus asynchronous semaphores are not exported in s4u to ease the
writting of tests), but it's failing for a user that kills a lot of
actors at random instants.
Martin Quinson [Fri, 25 Feb 2022 22:35:54 +0000 (23:35 +0100)]
OOP is good, too
Martin Quinson [Fri, 25 Feb 2022 18:39:02 +0000 (19:39 +0100)]
Rework a long and aging comment (but keep the xkcd reference)
Martin Quinson [Fri, 25 Feb 2022 14:02:09 +0000 (15:02 +0100)]
cosmetics: rename a variable and please sonar a tiny bit
Martin Quinson [Fri, 25 Feb 2022 09:46:58 +0000 (10:46 +0100)]
fix a memory corruption
Manual refcounting is the devil. Even when it's in LMM.
Augustin Degomme [Fri, 25 Feb 2022 08:30:56 +0000 (08:30 +0000)]
leak--
Martin Quinson [Fri, 25 Feb 2022 00:56:04 +0000 (01:56 +0100)]
Implement SemaphoreImpl::acquire_async (timeouts are allowed)
Martin Quinson [Thu, 24 Feb 2022 22:19:37 +0000 (23:19 +0100)]
kill some remains of the pre-C++ era
Back then, humans were supposed to manage the refcount manually.
Martin Quinson [Thu, 24 Feb 2022 17:05:04 +0000 (18:05 +0100)]
Rename MutexObserver to SynchroObserver (semaphore incoming)
Martin Quinson [Thu, 24 Feb 2022 13:41:37 +0000 (14:41 +0100)]
Try to tell sonar that the mutex_ cannot be null in is_enabled()
Martin Quinson [Thu, 24 Feb 2022 13:18:50 +0000 (14:18 +0100)]
Fix gcc MC builds
Martin Quinson [Thu, 24 Feb 2022 12:46:20 +0000 (13:46 +0100)]
Test the dependencies of Mutex transitions
- give each mutex an ID so that we can get reproducible debug messages.
This is arguably a waste of resource in non-MC setups. Patch welcome.
- give one mutex per pair of actors in the test, to make the test more
interesting for the reduction
- rework a bit the verbose output of the safety explorer
Martin Quinson [Thu, 24 Feb 2022 11:43:22 +0000 (12:43 +0100)]
Add a MC version of the s4u-synchro-mutex test
Martin Quinson [Thu, 24 Feb 2022 10:22:29 +0000 (11:22 +0100)]
MC: no need for a depends() method in Observers
These things are on the checker side now
Arnaud Giersch [Thu, 24 Feb 2022 11:31:38 +0000 (12:31 +0100)]
Please scan-build and hopefully sonar too [ci-skip]
Arnaud Giersch [Thu, 24 Feb 2022 10:42:33 +0000 (11:42 +0100)]
Ensure that MC session and checker are deleted.
Arnaud Giersch [Wed, 23 Feb 2022 22:17:24 +0000 (23:17 +0100)]
Use simpler std::vector.
Arnaud Giersch [Wed, 23 Feb 2022 22:07:55 +0000 (23:07 +0100)]
Free xbt_automaton on Api::s_close.
Arnaud Giersch [Wed, 23 Feb 2022 22:07:10 +0000 (23:07 +0100)]
Review xbt_automaton_*_free.
Arnaud Giersch [Wed, 23 Feb 2022 21:34:09 +0000 (22:34 +0100)]
Use more explicit identifiers.
Arnaud Giersch [Wed, 23 Feb 2022 21:29:21 +0000 (22:29 +0100)]
Fix segfault when exploration trace is empty.
Example:
$ ./bin/simgrid-mc -- ./teshsuite/mc/random-bug/random-bug
Martin Quinson [Wed, 23 Feb 2022 23:41:10 +0000 (00:41 +0100)]
MC: Support Mutexes in DPOR
Fixes https://github.com/simgrid/simgrid/issues/151
Martin Quinson [Wed, 23 Feb 2022 21:29:20 +0000 (22:29 +0100)]
Mutex do not need a locked_ field. owner_ != null is enough
Augustin Degomme [Wed, 23 Feb 2022 22:36:04 +0000 (23:36 +0100)]
try to get rid of a warning (without causing a dead store in infer?)
Augustin Degomme [Wed, 23 Feb 2022 22:35:12 +0000 (23:35 +0100)]
avoid going back to complex selector and switch to a simple algorithm here to avoid potential infinite loops.
Augustin Degomme [Wed, 23 Feb 2022 21:23:22 +0000 (22:23 +0100)]
more tab2spaces
Augustin Degomme [Wed, 23 Feb 2022 21:21:19 +0000 (22:21 +0100)]
tab to spaces
Augustin Degomme [Wed, 23 Feb 2022 21:18:02 +0000 (22:18 +0100)]
appease clang
Augustin Degomme [Wed, 23 Feb 2022 21:17:55 +0000 (22:17 +0100)]
changelog update
Augustin Degomme [Wed, 23 Feb 2022 20:12:48 +0000 (21:12 +0100)]
these are all pretty much allright, actually ...
just a doubt on chain bcast, but pipeline is close enough I think.
Augustin Degomme [Wed, 23 Feb 2022 19:44:06 +0000 (20:44 +0100)]
add openmpi scatter linear_nb algorithm
Augustin Degomme [Wed, 23 Feb 2022 18:05:09 +0000 (19:05 +0100)]
add butterfly algorithm from openmpi
described in [*] J.L. Traff. An improved Algorithm for (non-commutative) Reduce-scatter with an Application // Proc. of EuroPVM/MPI, 2005. -- pp. 129-137.
Augustin Degomme [Wed, 23 Feb 2022 10:31:52 +0000 (10:31 +0000)]
MC seems to just work on ARM now. Remove the forced compilation errors.
todo: check if UnwindContext::get_reg needs tweaking, but all mc tests pass
Martin Quinson [Wed, 23 Feb 2022 10:30:11 +0000 (11:30 +0100)]
further reduce a MC test that's still too long
Augustin Degomme [Wed, 23 Feb 2022 08:52:36 +0000 (08:52 +0000)]
pending implementation of new algorithms (see fixme), avoid using _lr as replacement in these cases.
_lr is not valid for some sizes, and may default to calling _ompi again, which causes an infinite loop.
todo: find theses cases and eliminate them
Martin Quinson [Wed, 23 Feb 2022 07:56:04 +0000 (08:56 +0100)]
Reduce the size of 2 UMPIRE tests that now timeout
UMPIRE will soon be grand replaced by MBI anyway.
SUTER Frederic [Tue, 22 Feb 2022 01:45:54 +0000 (02:45 +0100)]
deprecate Engine::shutdown()
Martin Quinson [Tue, 22 Feb 2022 23:26:17 +0000 (00:26 +0100)]
Implement MutexImpl::lock_async
Augustin Degomme [Tue, 22 Feb 2022 23:31:30 +0000 (00:31 +0100)]
selected collectives changed for these tests -> timing as well
Augustin Degomme [Tue, 22 Feb 2022 23:25:21 +0000 (00:25 +0100)]
Update OMPI selector.
It was last updated from version 3.1.2, which was released in 2018, and the selection logic was modified since.
Few algorithms will be added soon to match better.
Arnaud Giersch [Tue, 22 Feb 2022 08:01:27 +0000 (09:01 +0100)]
Disable tests failing when debug logs are disabled with enable_debug=OFF.
Martin Quinson [Mon, 21 Feb 2022 23:29:44 +0000 (00:29 +0100)]
doc: add a link from Mailbox::get_init to Comm::set_dst_data
Martin Quinson [Mon, 21 Feb 2022 21:25:55 +0000 (22:25 +0100)]
Rename mc::Checker to mc::Exploration as it defines an exploration algo
Martin Quinson [Sun, 20 Feb 2022 20:50:06 +0000 (21:50 +0100)]
Rename SynchroRawImpl to SynchroImpl
They will soon be made visible in S4U when Mutex::lock_async() and
friends gets implemented. In turn, lock_async() is good for two reasons:
symmetry of lock() with other activities; efficiency of MC reduction
technics (see the thesis of The Anh for details).
Martin Quinson [Sun, 20 Feb 2022 17:49:56 +0000 (18:49 +0100)]
3.31 is expected in 2022, not last year
Martin Quinson [Sun, 20 Feb 2022 14:36:42 +0000 (15:36 +0100)]
Cosmetics in the Release notes + Document recent changes on MC
Martin Quinson [Sun, 20 Feb 2022 10:36:35 +0000 (11:36 +0100)]
Sonar fixes (const, variable shadowing)
SUTER Frederic [Sun, 20 Feb 2022 01:35:17 +0000 (02:35 +0100)]
remove old wait any simcall
Martin Quinson [Sat, 19 Feb 2022 23:58:01 +0000 (00:58 +0100)]
That went ways too far
Martin Quinson [Sat, 19 Feb 2022 23:55:12 +0000 (00:55 +0100)]
Move another function of mc::api, to Transition
Martin Quinson [Sat, 19 Feb 2022 23:39:56 +0000 (00:39 +0100)]
Kill two more unused functions in mc::api
Martin Quinson [Sat, 19 Feb 2022 23:34:50 +0000 (00:34 +0100)]
MC: move a check_deadlock from ModelChecker to Session, and kill cruft in mc::api
Martin Quinson [Sat, 19 Feb 2022 23:13:59 +0000 (00:13 +0100)]
kill ModelChecker::simcall_is_visible()
no need for the checker to check whether a simcall is visible:
invisible simcalls are handled in the AppSide and never show up on the
cheker side.
Martin Quinson [Sat, 19 Feb 2022 23:03:28 +0000 (00:03 +0100)]
Kill Simcall::COMM_WAIT
Martin Quinson [Sat, 19 Feb 2022 20:38:11 +0000 (21:38 +0100)]
Empty a bit mc::api namespace
Martin Quinson [Sat, 19 Feb 2022 18:42:22 +0000 (19:42 +0100)]
Kill Simcall::COMM_RECV, COMM_IRECV, COMM_SEND and COMM_ISEND
Arnaud Giersch [Sat, 19 Feb 2022 14:08:24 +0000 (15:08 +0100)]
Explicit casts for Sonar.
Arnaud Giersch [Fri, 18 Feb 2022 17:28:27 +0000 (18:28 +0100)]
Apparently these asserts are not failing anymore. Uncomment.
Martin Quinson [Sat, 19 Feb 2022 12:09:47 +0000 (13:09 +0100)]
Fix a MC test that seem to be tested on freebsd only. Not sure
Martin Quinson [Sat, 19 Feb 2022 11:33:16 +0000 (12:33 +0100)]
MC: prefer a memleak to a segfault
Martin Quinson [Sat, 19 Feb 2022 10:26:36 +0000 (11:26 +0100)]
MC: the state does not need to have the simcall anymore
Martin Quinson [Sat, 19 Feb 2022 10:05:51 +0000 (11:05 +0100)]
CommDet: Fix memory corruption, and plug some memleaks
Passing local variables by address to lambda's closure does not seem
like a good idea.
Big big thanks to @agiersch for debugging this out.
(some memleaks remain TBD)
Martin Quinson [Sat, 19 Feb 2022 00:21:42 +0000 (01:21 +0100)]
MC: simplification knowing that every visible transitions have an observer
Martin Quinson [Fri, 18 Feb 2022 23:52:50 +0000 (00:52 +0100)]
MC does not need a mc_value_ in the simcall anymore
Martin Quinson [Fri, 18 Feb 2022 23:28:19 +0000 (00:28 +0100)]
Split the Comm observers to their own files
Martin Quinson [Fri, 18 Feb 2022 23:05:13 +0000 (00:05 +0100)]
Split TransitionAny and TransitionRandom to their own files
Martin Quinson [Fri, 18 Feb 2022 22:49:02 +0000 (23:49 +0100)]
Revalidate all SafetyChecker tesh now that the output changed
Martin Quinson [Fri, 18 Feb 2022 22:13:26 +0000 (23:13 +0100)]
Make CommDet a plugin on top of Safety
Martin Quinson [Fri, 18 Feb 2022 20:44:14 +0000 (21:44 +0100)]
Further simplifications in CommDet
Martin Quinson [Fri, 18 Feb 2022 20:23:07 +0000 (21:23 +0100)]
CommDet: detached send should be handled. But how?
Martin Quinson [Fri, 18 Feb 2022 20:10:58 +0000 (21:10 +0100)]
CommDet: Enforce deterministic pattern even during backtrack, to simplify the code
Martin Quinson [Fri, 18 Feb 2022 20:00:46 +0000 (21:00 +0100)]
CommDet: tiny simplification
Martin Quinson [Fri, 18 Feb 2022 19:53:18 +0000 (20:53 +0100)]
Add the MPI tag to the Send/Recv Transitions
Martin Quinson [Fri, 18 Feb 2022 19:21:00 +0000 (20:21 +0100)]
Try to fix the MC build on 32 bits
Martin Quinson [Fri, 18 Feb 2022 18:24:26 +0000 (19:24 +0100)]
Document the fact that MC big bang occured
Martin Quinson [Fri, 18 Feb 2022 18:02:06 +0000 (19:02 +0100)]
MC: no need to read the remote request directly
Martin Quinson [Fri, 18 Feb 2022 15:58:37 +0000 (16:58 +0100)]
CommDet: reimplement on top of transitions. Don't mess with requests anymore
The observer->set_comm() is done during the simcall execution on the
appside, but the transition is serialized before this simcall
execution. I need to fiddle the Checker <-> AppSide protocol, again.
Martin Quinson [Fri, 18 Feb 2022 16:10:54 +0000 (17:10 +0100)]
Have the application execute its transition before returning SIMCALL_EXECUTE_ANSWER
This makes the RPC protocol somewhat more complex, but it's mandatory
to get the updated observer.
This is useful in particular to Isend/Irecv observers that have a
set_comm() field that cannot be set before executing the simcall.
CommDet need that field anyway, so let's change the protocol that way.
Martin Quinson [Fri, 18 Feb 2022 09:11:42 +0000 (10:11 +0100)]
Add getters to the TransitionComm* and TransitionAny*
Martin Quinson [Fri, 18 Feb 2022 07:17:42 +0000 (08:17 +0100)]
sonar fixes
- use uintptr_t instead of void* on the Checker side.
They cannot be dereferenced anyway.
- various small things (const, remove empty statements)
Arnaud Giersch [Fri, 18 Feb 2022 15:05:55 +0000 (16:05 +0100)]
Fix sonar issues in ns3 examples.
Arnaud Giersch [Fri, 18 Feb 2022 13:03:45 +0000 (14:03 +0100)]
Fix sonar issues in ns3 bindings.
Arnaud Giersch [Fri, 18 Feb 2022 10:45:25 +0000 (11:45 +0100)]
Try again to enable ns3 for coverage and sonar [ci-skip].
Arnaud Giersch [Fri, 18 Feb 2022 10:30:10 +0000 (11:30 +0100)]
[experimental] Replace long list of excluded libs with a much shorter whitelist.
For now, exclude any lib which is not libsimgrid.
Arnaud Giersch [Fri, 18 Feb 2022 09:32:14 +0000 (10:32 +0100)]
Deprecate sg_host_dump.
It's unused since the removal of the simdag examples.
Arnaud Giersch [Fri, 18 Feb 2022 09:25:24 +0000 (10:25 +0100)]
Fix xbt_log_appender when there is no percent in template.
Martin Quinson [Fri, 18 Feb 2022 00:25:50 +0000 (01:25 +0100)]
Give the comm to {Send,Recv}Transition, as CommDet needs it
Martin Quinson [Thu, 17 Feb 2022 23:22:32 +0000 (00:22 +0100)]
CommDet: preparatory cosmetics
inline a few functions and move some small things around.
Martin Quinson [Thu, 17 Feb 2022 23:06:33 +0000 (00:06 +0100)]
CommDet: inline a function (+cosmetics)
Arnaud Giersch [Thu, 17 Feb 2022 15:02:16 +0000 (16:02 +0100)]
Pylint docs/source/tuto_s4u/*.py.
Arnaud Giersch [Thu, 17 Feb 2022 14:54:36 +0000 (15:54 +0100)]
Pylint teshsuite/*.py.