Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
simgrid.git
14 months agoPass include and library directories to try_compile.
Arnaud Giersch [Fri, 7 Apr 2023 13:23:05 +0000 (15:23 +0200)]
Pass include and library directories to try_compile.

14 months agoFix usage of option --cfg=path in tesh files.
Arnaud Giersch [Fri, 7 Apr 2023 09:43:02 +0000 (11:43 +0200)]
Fix usage of option --cfg=path in tesh files.

Most of them reference a non-existent directory: examples/smpi/msg/.
Remove them.

Use the option in tests from basic-parsing-test.

14 months agoMake distcheck
Martin Quinson [Thu, 6 Apr 2023 16:08:07 +0000 (18:08 +0200)]
Make distcheck

14 months agoMC: Reap all zombie childs to avoid them to accumulate
Martin Quinson [Thu, 6 Apr 2023 15:48:05 +0000 (17:48 +0200)]
MC: Reap all zombie childs to avoid them to accumulate

14 months agoRemove the timings of another ns3 test to help older ns3 versions
Martin Quinson [Thu, 6 Apr 2023 14:58:39 +0000 (16:58 +0200)]
Remove the timings of another ns3 test to help older ns3 versions

14 months agoAllow ns3 to be idempotent if correctly patched
Martin Quinson [Thu, 6 Apr 2023 14:28:33 +0000 (16:28 +0200)]
Allow ns3 to be idempotent if correctly patched

14 months agoRename `remove()` method on `Unfolding`
Maxwell Pirtle [Thu, 6 Apr 2023 11:52:50 +0000 (13:52 +0200)]
Rename `remove()` method on `Unfolding`

Since the events aren't ever removed from the
Unfolding and are instead simply displaced,
we change the name of the method to better
reflect what is going on

14 months agoMake use of the sets `G` and `U` with `Unfolding`
Maxwell Pirtle [Thu, 6 Apr 2023 09:46:03 +0000 (11:46 +0200)]
Make use of the sets `G` and `U` with `Unfolding`

The `Unfolding` class in UDPOR previously discarded
all events from `U` when they were no longer needed.
Technically, UDPOR moves those events into a set `G`
which can be used to do more interesting things
in the future (e.g. to model check cyclic state spaces).
Furthermore, there are some subtlties it seems in
fully destroying the contents of an event after it has
been discovered, viz. with dealing with what to do when
a previous extension set contains such a deleted event

14 months agoFix bug with immediate conflict detection
Maxwell Pirtle [Wed, 5 Apr 2023 12:58:29 +0000 (14:58 +0200)]
Fix bug with immediate conflict detection

Detecting immediate conflicts for an event is
important as part of the clean up phase of
UDPOR. There was a typo that gave incorrect
results for the actual conflicts that were
detected which was resolved.

NOTE: There is still a problem with event
deletion. The issue is that previous configurations
will contain references to events which have been
deleted in the extension set which is computed
for them (ex(C)). I'm not quite sure how to
handle this at the moment...

14 months agoImprove the logging level of that message that is relatively important
Martin Quinson [Wed, 5 Apr 2023 20:38:06 +0000 (22:38 +0200)]
Improve the logging level of that message that is relatively important

14 months agothese ns3 tests need an 'output sort' directive :(
Martin Quinson [Wed, 5 Apr 2023 20:02:59 +0000 (22:02 +0200)]
these ns3 tests need an 'output sort' directive :(

14 months agoRegenerate tesh files (one more time).
Arnaud Giersch [Wed, 5 Apr 2023 15:28:29 +0000 (17:28 +0200)]
Regenerate tesh files (one more time).

14 months agoExamine all opened_states_ to find the best candidate.
Arnaud Giersch [Wed, 5 Apr 2023 14:26:27 +0000 (16:26 +0200)]
Examine all opened_states_ to find the best candidate.

We cannot use a std::multiset, nor a std::priority_queue as before since
the value for the priority may change, even for states already stored in
opeened_states_.

Citing mlaurent:
 "Le problème c'est que dans run() la partie gestion de "persistent set" peut
  modifier des acteurs de State déjà dans opened_states_ en les passant à Todo.
  Et ça, ça peut modifier la valeur renvoyée par next_transition_guided()."

14 months agoCosmetics.
Arnaud Giersch [Sun, 2 Apr 2023 09:43:45 +0000 (11:43 +0200)]
Cosmetics.

14 months agoRename MC_NEED_PTRACE -> SIMGRID_MC_NEED_PTRACE for consistency.
Arnaud Giersch [Tue, 4 Apr 2023 12:02:40 +0000 (14:02 +0200)]
Rename MC_NEED_PTRACE -> SIMGRID_MC_NEED_PTRACE for consistency.

14 months agoCentralize definitions for the name of environment variables used by the MC.
Arnaud Giersch [Thu, 30 Mar 2023 12:58:09 +0000 (14:58 +0200)]
Centralize definitions for the name of environment variables used by the MC.

14 months agoSonar smells; remove redundant mentions of std::shared_ptr<State>.
Arnaud Giersch [Wed, 5 Apr 2023 12:09:45 +0000 (14:09 +0200)]
Sonar smells; remove redundant mentions of std::shared_ptr<State>.

14 months agoFix make distcheck, stupid bummer
Martin Quinson [Wed, 5 Apr 2023 19:40:32 +0000 (21:40 +0200)]
Fix make distcheck, stupid bummer

14 months agoEnforce the ns3 timings for the latest version of ns3, and just execute older versions
Martin Quinson [Wed, 5 Apr 2023 19:27:39 +0000 (21:27 +0200)]
Enforce the ns3 timings for the latest version of ns3, and just execute older versions

14 months agoFix conflict detection between configs + history
Maxwell Pirtle [Wed, 5 Apr 2023 08:04:18 +0000 (10:04 +0200)]
Fix conflict detection between configs + history

The computation of K-partial alternatives requires
that we can determine whether or not `[e] + C`
for some event `e` is a valid configuration. There
was a subtlety in the code prior to the this commit
that caused UDPOR to incorrectly compute whether
or not `[e] + C` was a valid configuration. Specifically,
it was not sufficient to look at the difference between
the event's history and the events in the configuration
and checking *dependency*. You have to check *conflicts*:
it's possible that two events are dependent in a configuration
but are related to each other causally (and thus would
not be in conflict with one another)

14 months agoFix dynamic_cast<> typo for computation for CommRecv
Maxwell Pirtle [Tue, 4 Apr 2023 08:12:30 +0000 (10:12 +0200)]
Fix dynamic_cast<> typo for computation for CommRecv

There was a type check in the incremental computation
of extension sets for CommRecv that incorrectly cast
the value to a CommSend instead. I suppose this gave
us some undefined behavior as UDPOR correctly identified
the bug in some cases but not in other cases.
With the small fix, UDPOR now correctly identifies
the assertion failure in all cases in mc-failed-assertion.

14 months agoClarify that the issuer for a CommWait() action is that of the same actor
Maxwell Pirtle [Mon, 3 Apr 2023 09:42:38 +0000 (11:42 +0200)]
Clarify that the issuer for a CommWait() action is that of the same actor

The `CommWait()` transition, in the manner that SimGrid
handles communications, can be said to be "issued" by either
the sender or the receiver that are a part of the communication
under consideration. We favor that which is run by the same actor;
indeed, we require it as this point unless otherwise noted.

If it is possible for a `CommWait` to wait on a communication
whose identity cannot be traced back to an event that already
executed by the same actor, the model would have to change
when computing extension sets for CommWait(), specifically
when checking whether or not that transition is enabled
at a prior state

14 months agoAdd first round of debug logging to UDPOR
Maxwell Pirtle [Mon, 3 Apr 2023 08:18:31 +0000 (10:18 +0200)]
Add first round of debug logging to UDPOR

Several XBT_DEBUG() statements were added throughout
the functions in UdporChecker to better understand
the evolution of UDPOR in the context of SimGrid.
Several `to_string()` statements were added where
appropriate to aid in the visualization of the
unfolding structure. Until we potentially add
a more complicated tree-drawing algorithm to SimGrid
that can render the unfolding structure systematically,
this is the best we have

14 months agoIntermediate commit to prove that UDPOR functions
Maxwell Pirtle [Tue, 28 Mar 2023 11:44:12 +0000 (13:44 +0200)]
Intermediate commit to prove that UDPOR functions

This commit returns a const_cast<>-ed UnfoldingEvent
from the intersection of the sets A and ex(C) in
the Unfolding. We use this work around currently as
there is no way currently to distinguish between a
set of events and a set of constant events with
EventSet. To do so would require a number of changes
and probably a class that would be entirely duplicated
and more difficult to read without the help of e.g.
a template (which itself is not always the easiest to
read).

14 months agoFill in implementation of CommWait before large changes
Maxwell Pirtle [Mon, 27 Mar 2023 11:37:08 +0000 (13:37 +0200)]
Fill in implementation of CommWait before large changes

This commit adds the implementation of the extension
set computation before larger changes are added into
the UDPOR implementation.

What was discovered is that events hold stale references
to the transitions that they own. As UDPOR executes
actors in its quest to search the unfolding of the
application, the transitions that are executed are
potentially updated with additional information
*after* they have been executed. We'll need a way
to figure out how to manage this without causing an
absolute mess...

14 months agoAdd extension set computations without type casts
Maxwell Pirtle [Fri, 24 Mar 2023 13:08:41 +0000 (14:08 +0100)]
Add extension set computations without type casts

14 months agoAdd first steps for ex(C) for CommWait
Maxwell Pirtle [Fri, 24 Mar 2023 10:21:13 +0000 (11:21 +0100)]
Add first steps for ex(C) for CommWait

Computing the extension sets of a `CommWait`
action turns out to be a bit more involved than
I anticipated. In particular, we must determine
whether or not the transition is enabled at
some point in the past. This requires us to
find the event which created the communication
on which the `CommWait` waits and perform a
couple checks on that event. The current implementation
is not complete and is missing several important
steps, but it's a step in the right direction.

Additionally, some Sonar errors were fixed.

14 months agoMove state stack management to member on UnfoldingChecker
Maxwell Pirtle [Thu, 23 Mar 2023 08:19:08 +0000 (09:19 +0100)]
Move state stack management to member on UnfoldingChecker

Instead of passing around the variable `state_stack`
in a number of arguments in the UnfoldingChecker,
we moved the stack into a member on the class. This
also allows us to give a textual trace of what UDPOR
is searching much in the same way as is done with
DFSExplorer

14 months agoAdd comment on state restoration in UnfoldingChecker
Maxwell Pirtle [Wed, 22 Mar 2023 08:53:29 +0000 (09:53 +0100)]
Add comment on state restoration in UnfoldingChecker

14 months agoTrack the current sequence of states with UDPOR
Maxwell Pirtle [Wed, 22 Mar 2023 08:33:07 +0000 (09:33 +0100)]
Track the current sequence of states with UDPOR

Prior to this commit, we only tracked the "current"
state that was visited by the program. This is not
sufficient however: we must also keep track of the
sequence of states that UDPOR visited to *generate*
the configuration it is currently looking at. This
is required since we need to be able to generate
a fresh remote process when UDPOR decides to re-explore
a configuration `C` in its second recursive call
if it determines that an alternative exists. The
state regeneration is very similar (practically
identical) to that which is performed in the DFSChecker.

14 months agoReplace switch statement with map of handlers
Maxwell Pirtle [Wed, 22 Mar 2023 08:12:49 +0000 (09:12 +0100)]
Replace switch statement with map of handlers

14 months agoAdd skeleton implementation for ex(C) for CommSend
Maxwell Pirtle [Tue, 21 Mar 2023 09:13:42 +0000 (10:13 +0100)]
Add skeleton implementation for ex(C) for CommSend

14 months agoAdd skeleton implementations to ExtensionSetCalculator
Maxwell Pirtle [Mon, 20 Mar 2023 09:55:47 +0000 (10:55 +0100)]
Add skeleton implementations to ExtensionSetCalculator

14 months agoAdd ExtensionSetCalculator files
Maxwell Pirtle [Mon, 20 Mar 2023 08:15:18 +0000 (09:15 +0100)]
Add ExtensionSetCalculator files

14 months agoAdd test case for tracking latest events/transitions
Maxwell Pirtle [Mon, 20 Mar 2023 07:57:26 +0000 (08:57 +0100)]
Add test case for tracking latest events/transitions

14 months agoAdd dependency between same actor for tests
Maxwell Pirtle [Fri, 17 Mar 2023 14:11:48 +0000 (15:11 +0100)]
Add dependency between same actor for tests

It doesn't make sense to say that two
transitions executed by the same actor are
independent; indeed, it would lead to unexpected
results when testing whether or not a configuration
were properly tracking the "most recent" event
for each actor, as is done in subsequent commits

14 months agoBegin tracking latest events for each actor
Maxwell Pirtle [Fri, 17 Mar 2023 10:42:46 +0000 (11:42 +0100)]
Begin tracking latest events for each actor

Computing specialized extensions for each transition
type frequently requires knowing the "latest" event
that some given actor is associated with in some
configuration (denoted `preEvt(C, a)`). We now track
this information as new events are added and pre-compute
the information when constructing a configuration with
a set of events using once again our favorite topological
ordering function.

Subsequent commits will introduce some unit tests to
ensure that the Configuration is tracking the new events
appropriately.

14 months agoMake strsignal(SIGSEGV) return the same string across all architectures
Martin Quinson [Wed, 5 Apr 2023 06:13:55 +0000 (08:13 +0200)]
Make strsignal(SIGSEGV) return the same string across all architectures

14 months agoUse the fast SOCK_SEQPACKET where available
Martin Quinson [Tue, 4 Apr 2023 22:03:40 +0000 (00:03 +0200)]
Use the fast SOCK_SEQPACKET where available

Maybe SOCK_SEQPACKET is not faster than SOCK_STREAM per se, I don't
know, but streams force us to re-bufferize the data that we receive in
excess, leading to many useless data copies.

14 months agoMake the MC protocol work on top of STREAM sockets
Martin Quinson [Tue, 4 Apr 2023 21:45:27 +0000 (23:45 +0200)]
Make the MC protocol work on top of STREAM sockets

MacOSX does not have AF_UNIX + SOCK_SEQPACKET so we need SOCK_STREAM
for that architecture. I'll make it SEQPACKET on Linux+FreeBSD and
STREAM on Mac in the next commit, but I wanted to code and debug the
SOCK_STREAM version locally.

The problem with the SOCK_STREAM version is that messages are not
segmented anymore: each recv() gets everything that got posted on the
socket already, so I have to implement a buffer in which I can
reinject the extraneous bytes received, so that they can be used in
the next recv(). The real fun begins when I have half of the expected
message in buffer and the other half must be taken from the network.

Or even better: the second half was not posted yet so reading from the
network is blocking for ever. This can happen when I receive any
message in a 512-bytes buffer, but I already had a full but shorter
message in buffer. I have to try reading from the socket with the
DONT_WAIT flag, detect that there is nothing to read, and use the
buffer content only.

14 months agoRegenerate tesh files.
Arnaud Giersch [Tue, 4 Apr 2023 15:24:07 +0000 (17:24 +0200)]
Regenerate tesh files.

14 months agoUse a multiset to handle opened states, and ensures a reproductible order on differen...
Arnaud Giersch [Tue, 4 Apr 2023 15:12:25 +0000 (17:12 +0200)]
Use a multiset to handle opened states, and ensures a reproductible order on different systems.

From cppreference: The order of the elements that compare equivalent is the order of insertion and does not change.
 (since C++11)

14 months agoAn integer seems good enough to handle priorities, and is not subject to rounding...
Arnaud Giersch [Tue, 4 Apr 2023 15:08:57 +0000 (17:08 +0200)]
An integer seems good enough to handle priorities, and is not subject to rounding errors.

14 months agoDon't die at compilation when activating stateless MC on non-ptrace architectures
Martin Quinson [Mon, 3 Apr 2023 19:13:58 +0000 (21:13 +0200)]
Don't die at compilation when activating stateless MC on non-ptrace architectures

14 months agoRemove a file generated by cmake
Martin Quinson [Mon, 3 Apr 2023 19:10:10 +0000 (21:10 +0200)]
Remove a file generated by cmake

14 months agoEnsure in tests that the ns3 timings remain unchanged
Martin Quinson [Mon, 3 Apr 2023 12:40:47 +0000 (14:40 +0200)]
Ensure in tests that the ns3 timings remain unchanged

14 months agoRevert "Treat ECONNRESET like a normal connection close."
Arnaud Giersch [Mon, 3 Apr 2023 14:38:48 +0000 (16:38 +0200)]
Revert "Treat ECONNRESET like a normal connection close."

This reverts commit 2fbcc71ab230e6a05e64189f6bd7c49c1df31907.

It was erroneously pushed before testing. Sorry for the noise.
[ci-skip]

14 months agoTreat ECONNRESET like a normal connection close.
Arnaud Giersch [Mon, 3 Apr 2023 14:13:42 +0000 (16:13 +0200)]
Treat ECONNRESET like a normal connection close.

Also return immediately with EAGAIN, or handle_message() will fail with size == -1.

14 months agoKill another override-to-same-content
Martin Quinson [Sun, 2 Apr 2023 21:26:20 +0000 (23:26 +0200)]
Kill another override-to-same-content

14 months agoCosmetics in cmake
Martin Quinson [Sun, 2 Apr 2023 20:44:08 +0000 (22:44 +0200)]
Cosmetics in cmake

- use ON/OFF instead of 1/0
- display all MC related options together
- mark some crufy variables as advanced to hide them

14 months agoDon't override a method to the same content
Martin Quinson [Sun, 2 Apr 2023 20:25:21 +0000 (22:25 +0200)]
Don't override a method to the same content

14 months agoDon't use ucontextes on Apple hosts
Martin Quinson [Sun, 2 Apr 2023 10:33:24 +0000 (12:33 +0200)]
Don't use ucontextes on Apple hosts

14 months agoCast a printf parameter to please MacOS X
Martin Quinson [Sun, 2 Apr 2023 10:27:47 +0000 (12:27 +0200)]
Cast a printf parameter to please MacOS X

14 months agoDisable MC stateful API when not running in MC
Martin Quinson [Sun, 2 Apr 2023 10:24:15 +0000 (12:24 +0200)]
Disable MC stateful API when not running in MC

This is a better fix for the null-dereference found by the sanitizers
since 2 nights. Instead of hiding the problem on these builds (as done
in previous commit), fix it for every builds.

14 months agoMC stateful API is only needed when stateful MC is compiled in
Martin Quinson [Sun, 2 Apr 2023 10:10:08 +0000 (12:10 +0200)]
MC stateful API is only needed when stateful MC is compiled in

14 months agoDon't use CLOEXEC
Martin Quinson [Sun, 2 Apr 2023 08:04:10 +0000 (10:04 +0200)]
Don't use CLOEXEC

In one case (Checker->App), we were removing it after setup so we
don't need it.

In the other case (App->App), it was just to be tiddy but it's not
really useful: Forking applications are barely supported anyway.

14 months agoEnsure that the clang optimizer does not swallow the segfault I'm expecting
Martin Quinson [Sat, 1 Apr 2023 22:34:25 +0000 (00:34 +0200)]
Ensure that the clang optimizer does not swallow the segfault I'm expecting

Instead of actually dereferencing the null pointer (which drives the
static analyzers nuts), simply send myself a SIGSEGV.

14 months agoIgnore empty replay path + hide a global (to avoid init fiasco)
Martin Quinson [Sat, 1 Apr 2023 21:45:32 +0000 (23:45 +0200)]
Ignore empty replay path + hide a global (to avoid init fiasco)

I was observing that the model_checking_mode global did not had the
same value when compiling with or without optimizations.

Maybe I had a sort of race condition on model_checking_mode during
initialization, or maybe the config element of the replay path was
either called before or after the initialization of the library, thus
replacing the model_checking_mode to REPLAY even if it was supposed to
be APP_SIDE in my case.

It's fixed now, but I'm not completely sure of which of these change
was the right one (probably the replay path). Both seem legit, so commit both.

14 months agoMore logs around the configuration of the MC variants
Martin Quinson [Sat, 1 Apr 2023 18:03:42 +0000 (20:03 +0200)]
More logs around the configuration of the MC variants

14 months agoReally diplay cmake parameters in the jenkins logs
Martin Quinson [Sat, 1 Apr 2023 17:54:30 +0000 (19:54 +0200)]
Really diplay cmake parameters in the jenkins logs

14 months agoJenkins: display cmake parameters in the logs
Martin Quinson [Sat, 1 Apr 2023 17:46:07 +0000 (19:46 +0200)]
Jenkins: display cmake parameters in the logs

14 months agoOption model-checking OFF by default
Martin Quinson [Sat, 1 Apr 2023 17:45:46 +0000 (19:45 +0200)]
Option model-checking OFF by default

14 months agoDon't qwack when the default empty string is passed as a replay path
Martin Quinson [Sat, 1 Apr 2023 15:56:56 +0000 (17:56 +0200)]
Don't qwack when the default empty string is passed as a replay path

14 months agoRevert "Also valgrind childs in CI, to valgrind MC apps"
Martin Quinson [Sat, 1 Apr 2023 10:20:48 +0000 (12:20 +0200)]
Revert "Also valgrind childs in CI, to valgrind MC apps"

This is already done in Tests.cmake (note so in my_valgrind.pl)

This reverts commit ee681140d428f4adb2cbfde207a04a4fc5a84b95.

14 months agoFix an initialization race around the AppSide
Martin Quinson [Sat, 1 Apr 2023 09:45:54 +0000 (11:45 +0200)]
Fix an initialization race around the AppSide

14 months agoFix make distcheck
Martin Quinson [Sat, 1 Apr 2023 00:42:18 +0000 (02:42 +0200)]
Fix make distcheck

14 months agoAlso valgrind childs in CI, to valgrind MC apps
Martin Quinson [Sat, 1 Apr 2023 00:32:40 +0000 (02:32 +0200)]
Also valgrind childs in CI, to valgrind MC apps

14 months agoOnly compile stateless MC when libevent is found
Martin Quinson [Sat, 1 Apr 2023 00:30:43 +0000 (02:30 +0200)]
Only compile stateless MC when libevent is found

14 months agoRename SIMGRID_HAVE_MC into SIMGRID_HAVE_STATEFUL_MC (so that MC can be optional...
Martin Quinson [Fri, 31 Mar 2023 22:58:56 +0000 (00:58 +0200)]
Rename SIMGRID_HAVE_MC into SIMGRID_HAVE_STATEFUL_MC (so that MC can be optional again)

14 months agoFix non-MC builds when MC-only dependencies are missing
Martin Quinson [Fri, 31 Mar 2023 22:21:16 +0000 (00:21 +0200)]
Fix non-MC builds when MC-only dependencies are missing

14 months agoCompile the safe part of MC in default mode too
Martin Quinson [Fri, 31 Mar 2023 21:48:26 +0000 (23:48 +0200)]
Compile the safe part of MC in default mode too

Safety properties (with no checkpointing) are not requiring anything
weird nowadays. Liveness properties, communication determinism and
state-equality reductions are not considered safe as they still need
some memory introspection black magic.

14 months agoTry to please the ultramodern clang running on FreeBSD by properly giving a copy...
Martin Quinson [Fri, 31 Mar 2023 16:33:59 +0000 (18:33 +0200)]
Try to please the ultramodern clang running on FreeBSD by properly giving a copy operator to the abstract class too

We should stop using the copy operator, and use a nice and clean
clone() call instead. Mathieu's on it.

14 months agoFix doc on how to select the compiler before compiling
Martin Quinson [Fri, 31 Mar 2023 14:41:39 +0000 (16:41 +0200)]
Fix doc on how to select the compiler before compiling

14 months agoMerge branch 'master' into 'master'
Martin Quinson [Fri, 31 Mar 2023 15:59:36 +0000 (15:59 +0000)]
Merge branch 'master' into 'master'

Guiding Backtrack in DFSExplorer

See merge request simgrid/simgrid!143

14 months ago[gitlab-ci] Run "make distcheck-configure" for merge requests.
Arnaud Giersch [Fri, 31 Mar 2023 14:56:04 +0000 (16:56 +0200)]
[gitlab-ci] Run "make distcheck-configure" for merge requests.

14 months agoAllow to skip some stages of "make distcheck".
Arnaud Giersch [Fri, 31 Mar 2023 14:48:02 +0000 (16:48 +0200)]
Allow to skip some stages of "make distcheck".

Now:
* "make distcheck-archive" only checks the archive
* "make distcheck-configure" also runs cmake et checks the file MANIFEST.in
* "make distcheck" depends on the previous stages, and runs the full build+install+tests

14 months agoCorrectly select the clang compiler on gitlab CI
Martin Quinson [Fri, 31 Mar 2023 14:39:21 +0000 (16:39 +0200)]
Correctly select the clang compiler on gitlab CI

14 months agoGitlab CI: Use clang on modelchecker builds, for MRs
Martin Quinson [Fri, 31 Mar 2023 13:58:32 +0000 (15:58 +0200)]
Gitlab CI: Use clang on modelchecker builds, for MRs

14 months agoFix clang builds
Martin Quinson [Fri, 31 Mar 2023 13:55:42 +0000 (15:55 +0200)]
Fix clang builds

14 months agoAdd a small implementation note in MC
Martin Quinson [Wed, 29 Mar 2023 08:00:25 +0000 (10:00 +0200)]
Add a small implementation note in MC

14 months agoMerge branch 'master' into 'master'
Martin Quinson [Fri, 31 Mar 2023 11:54:08 +0000 (11:54 +0000)]
Merge branch 'master' into 'master'

Add battery plugin and fix DAG doc

See merge request simgrid/simgrid!142

14 months agoAdd battery plugin and fix DAG doc
Adrien [Fri, 31 Mar 2023 11:54:07 +0000 (11:54 +0000)]
Add battery plugin and fix DAG doc

14 months agoMerge branch 'master' of https://framagit.org/simgrid/simgrid
mlaurent [Thu, 30 Mar 2023 20:15:33 +0000 (22:15 +0200)]
Merge branch 'master' of https://framagit.org/simgrid/simgrid

14 months agoRename guide as strategy and fix counter-example display with recipe
mlaurent [Thu, 30 Mar 2023 20:09:31 +0000 (22:09 +0200)]
Rename guide as strategy and fix counter-example display with recipe

14 months agoReplace state copy with recipe: list of transition to replay a state
mlaurent [Thu, 30 Mar 2023 13:04:28 +0000 (15:04 +0200)]
Replace state copy with recipe: list of transition to replay a state

14 months agoCosmetics (help project_description.sh) [ci-skip].
Arnaud Giersch [Wed, 29 Mar 2023 10:32:40 +0000 (12:32 +0200)]
Cosmetics (help project_description.sh) [ci-skip].

14 months ago[jenkins] Remove stale sockets from simgrid-mc.
Arnaud Giersch [Wed, 29 Mar 2023 09:01:22 +0000 (11:01 +0200)]
[jenkins] Remove stale sockets from simgrid-mc.

14 months agoAdd missing file
mlaurent [Wed, 29 Mar 2023 08:27:18 +0000 (10:27 +0200)]
Add missing file

14 months agoChange opened states for a priority queue
mlaurent [Tue, 28 Mar 2023 11:55:17 +0000 (13:55 +0200)]
Change opened states for a priority queue

14 months agoAbide by both compiler warnings
mlaurent [Mon, 27 Mar 2023 20:43:54 +0000 (22:43 +0200)]
Abide by both compiler warnings

14 months agoNow handle random transition and multiple times transitions
mlaurent [Mon, 27 Mar 2023 18:19:28 +0000 (20:19 +0200)]
Now handle random transition and multiple times transitions

14 months agoMerge branch 'master' of https://framagit.org/simgrid/simgrid
mlaurent [Mon, 27 Mar 2023 08:24:38 +0000 (10:24 +0200)]
Merge branch 'master' of https://framagit.org/simgrid/simgrid

14 months agoActivate the stdobject test now that it works
Martin Quinson [Mon, 27 Mar 2023 07:00:50 +0000 (09:00 +0200)]
Activate the stdobject test now that it works

14 months agoDon't set a really short timeout on sendsend now that this test works
Martin Quinson [Mon, 27 Mar 2023 07:00:25 +0000 (09:00 +0200)]
Don't set a really short timeout on sendsend now that this test works

14 months agoRevert "Revalidate tesh files now that safety checking is based on reforks"
Martin Quinson [Sun, 26 Mar 2023 20:01:11 +0000 (22:01 +0200)]
Revert "Revalidate tesh files now that safety checking is based on reforks"

We can revert this, as we don't re-initialize again and again the
application in refork mode. Instead, we fork a pre-initialized app.

This reverts commit b2a9ee8e090af818cca9e72cd0e44fa1b91586b0.

14 months agoImplement reforks by forking the application, to save the app exec time
Martin Quinson [Sun, 26 Mar 2023 19:56:46 +0000 (21:56 +0200)]
Implement reforks by forking the application, to save the app exec time

Instead of forking from the checker and exec()ing the application, we
now fork+exec an application that we use as a proxy to the real
application process.

When we need a new application process, we fork it from the proxy,
which is much faster as it's already initialized.

The extra complexity is when the socket closes abruptly on the Checker
side, which means that the application died. We cannot waitpid() on
the app directly, as it's our grandchild. So, we have to ask the proxy
to do the waitpid for us and return the status.

14 months agoAllow up to 30 elements in ENUM_CLASS
Martin Quinson [Sun, 26 Mar 2023 19:43:31 +0000 (21:43 +0200)]
Allow up to 30 elements in ENUM_CLASS

14 months agomemset 0 the memory that is sent over the network
Martin Quinson [Sat, 25 Mar 2023 15:33:06 +0000 (16:33 +0100)]
memset 0 the memory that is sent over the network

14 months agoMC protocol: rename INITIAL_ADDRESSES msg to NEED_MEMINFO
Martin Quinson [Sat, 25 Mar 2023 15:06:56 +0000 (16:06 +0100)]
MC protocol: rename INITIAL_ADDRESSES msg to NEED_MEMINFO

14 months agoActually, now that the appside is not ptraced, there is no point killing it
Martin Quinson [Sat, 25 Mar 2023 14:36:41 +0000 (15:36 +0100)]
Actually, now that the appside is not ptraced, there is no point killing it

Closing the socket is enough; it will exit on its self.

Also, there is no point waitpid()ing it, as the libevent loop is
already doing so.