Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Big bang in MC: app's observers are serialized, to become transitions in checker
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Fri, 11 Feb 2022 00:48:24 +0000 (01:48 +0100)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Fri, 11 Feb 2022 11:28:18 +0000 (12:28 +0100)
commit1d1294418fcdb34a66a0569033b173274db14fe8
tree9891c5c4241ce69790ea5e1c4c9a86a29a679432
parent9e0b4e4bb3f3805b1645b6667fa091123456b9fc
Big bang in MC: app's observers are serialized, to become transitions in checker

Instead of interacting with the observers over the network, we now
transfer over the wire (a simplified copy of) the observer to the
checker.

This was necessary because the lifetime of the Observer (or of its
components) was sometimes too short: it happened that the Actor
refered to by the Observer was not existing anymore at the end of the
simulation when the depend relation was evaluated. Or something like
that, I'm not sure.

Another argument for this change was that UDPOR reduction sometimes
need to evaluate the dependency between transitions that are not in
the same history (in the same run of the application), so we really
need to carry the transition over to let them live in the checker.

Note that we are not copying every information of the observer over,
only the ones that are relevant to the model-checker.

Finally, this change is still ongoing:
 - not all observers are serialized over the wire yet
 - the depends() are not implemented in the Transition yet
 - the network protocol is utterly inefficient, and we probably need
   to move to FlatBuffer or something like that.
 - a lot of dead code remains

Sorry for the mess, it's progressing rather slowly...
16 files changed:
src/kernel/activity/MailboxImpl.cpp
src/kernel/activity/MailboxImpl.hpp
src/kernel/actor/SimcallObserver.cpp
src/kernel/actor/SimcallObserver.hpp
src/mc/ModelChecker.cpp
src/mc/ModelChecker.hpp
src/mc/Transition.cpp
src/mc/Transition.hpp
src/mc/api.cpp
src/mc/api.hpp
src/mc/checker/SafetyChecker.cpp
src/mc/mc_record.cpp
src/mc/mc_state.cpp
src/mc/mc_state.hpp
src/mc/remote/AppSide.cpp
src/mc/remote/mc_protocol.h