> [0.000000] [mc_explo/INFO] 3: iSend(mbox=0)
> [0.000000] [mc_explo/INFO] 1: WaitComm(from 3 to 1, mbox=0, no timeout)
> [0.000000] [mc_explo/INFO] You can debug the problem (and see the whole details) by rerunning out of simgrid-mc with --cfg=model-check/replay:'1;3;1;1;3;3;1'
-> [0.000000] [mc_dfs/INFO] DFS exploration ended. 2091 unique states visited; 529 backtracks (8359 transition replays, 5739 states visited overall)
+> [0.000000] [mc_dfs/INFO] DFS exploration ended. 1958 unique states visited; 447 backtracks (7150 transition replays, 4745 states visited overall)
XBT_DEBUG("********* Start communication determinism verification *********");
- auto base = new DFSExplorer(args, with_dpor);
+ auto base = new DFSExplorer(args, with_dpor, true);
auto extension = new CommDetExtension(*base);
DFSExplorer::on_exploration_start([extension](RemoteApp const&) {
} // If no backtracing point, then the stack is empty and the exploration is over
}
-DFSExplorer::DFSExplorer(const std::vector<char*>& args, bool with_dpor) : Exploration(args, _sg_mc_termination)
+DFSExplorer::DFSExplorer(const std::vector<char*>& args, bool with_dpor, bool need_memory_info)
+ : Exploration(args, need_memory_info || _sg_mc_termination)
{
if (with_dpor)
reduction_mode_ = ReductionMode::dpor;
static xbt::signal<void(RemoteApp&)> on_log_state_signal;
public:
- explicit DFSExplorer(const std::vector<char*>& args, bool with_dpor);
+ explicit DFSExplorer(const std::vector<char*>& args, bool with_dpor, bool need_memory_info = false);
void run() override;
RecordTrace get_record_trace() override;
std::vector<std::string> get_textual_trace() override;
#include "xbt/system_error.hpp"
#ifdef __linux__
-#include <sys/personality.h>
#include <sys/prctl.h>
#endif
sigemptyset(&mask);
xbt_assert(sigprocmask(SIG_SETMASK, &mask, nullptr) >= 0, "Could not unblock signals");
xbt_assert(prctl(PR_SET_PDEATHSIG, SIGHUP) == 0, "Could not PR_SET_PDEATHSIG");
-
- // Make sure that the application process layout is not randomized, so that the info we gather is stable over re-execs
- if (personality(ADDR_NO_RANDOMIZE) == -1) {
- XBT_ERROR("Could not set the NO_RANDOMIZE personality");
- throw xbt::errno_error();
- }
#endif
// Remove CLOEXEC to pass the socket to the application