instance_ = std::make_unique<simgrid::mc::AppSide>(fd);
// Wait for the model-checker:
- errno = 0;
+ if (getenv("MC_NEED_PTRACE") != nullptr) {
+ errno = 0;
#if defined __linux__
- ptrace(PTRACE_TRACEME, 0, nullptr, nullptr);
+ ptrace(PTRACE_TRACEME, 0, nullptr, nullptr);
#elif defined BSD
- ptrace(PT_TRACE_ME, 0, nullptr, 0);
+ ptrace(PT_TRACE_ME, 0, nullptr, 0);
#else
-#error "no ptrace equivalent coded for this platform"
+ xbt_die("no ptrace equivalent coded for this platform, please don't use the liveness checker here.");
#endif
- xbt_assert(errno == 0 && raise(SIGSTOP) == 0, "Could not wait for the model-checker (errno = %d: %s)", errno,
- strerror(errno));
+
+ xbt_assert(errno == 0 && raise(SIGSTOP) == 0, "Could not wait for the model-checker (errno = %d: %s)", errno,
+ strerror(errno));
+ }
instance_->handle_messages();
return instance_.get();
if (terminate_asap)
::_Exit(0);
}
-void AppSide::handle_initial_addresses()
+void AppSide::handle_need_meminfo()
{
- this->need_memory_info_ = true;
- s_mc_message_initial_addresses_reply_t answer = {};
- answer.type = MessageType::INITIAL_ADDRESSES_REPLY;
- answer.mmalloc_default_mdp = mmalloc_get_current_heap();
- xbt_assert(channel_.send(answer) == 0, "Could not send response with initial addresses.");
+ this->need_memory_info_ = true;
+ s_mc_message_need_meminfo_reply_t answer = {};
+ answer.type = MessageType::NEED_MEMINFO_REPLY;
+ answer.mmalloc_default_mdp = mmalloc_get_current_heap();
+ xbt_assert(channel_.send(answer) == 0, "Could not send response to the request for meminfo.");
}
void AppSide::handle_actors_status() const
{
handle_finalize((s_mc_message_int_t*)message_buffer.data());
break;
- case MessageType::INITIAL_ADDRESSES:
- assert_msg_size("INITIAL_ADDRESSES", s_mc_message_t);
- handle_initial_addresses();
+ case MessageType::NEED_MEMINFO:
+ assert_msg_size("NEED_MEMINFO", s_mc_message_t);
+ handle_need_meminfo();
break;
case MessageType::ACTORS_STATUS: