From: Arnaud Giersch Date: Mon, 4 Feb 2019 10:01:22 +0000 (+0100) Subject: [codacy/cppcheck] A few more issues. X-Git-Tag: v3_22~393 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/1b2975e32481a9b38fe38af90db86ac5c54d8e59 [codacy/cppcheck] A few more issues. --- diff --git a/src/simix/ActorImpl.cpp b/src/simix/ActorImpl.cpp index 3b16efa0f6..cfec9024c8 100644 --- a/src/simix/ActorImpl.cpp +++ b/src/simix/ActorImpl.cpp @@ -149,8 +149,8 @@ simgrid::s4u::Actor* ActorImpl::restart() SIMIX_process_kill(this, (this == simix_global->maestro_process) ? this : SIMIX_process_self()); // start the new process - ActorImpl* actor = - SIMIX_process_create(arg.name, std::move(arg.code), arg.data, arg.host, arg.properties.get(), nullptr); + ActorImplPtr actor = + ActorImpl::create(arg.name, std::move(arg.code), arg.data, arg.host, arg.properties.get(), nullptr); actor->set_kill_time(arg.kill_time); actor->set_auto_restart(arg.auto_restart); @@ -262,78 +262,69 @@ void ActorImpl::throw_exception(std::exception_ptr e) waiting_synchro = nullptr; } -void create_maestro(simgrid::simix::ActorCode code) -{ - /* Create maestro process and initialize it */ - smx_actor_t maestro = new simgrid::kernel::actor::ActorImpl(simgrid::xbt::string(""), /*host*/ nullptr); - - if (not code) { - maestro->context_ = SIMIX_context_new(simgrid::simix::ActorCode(), nullptr, maestro); - } else { - maestro->context_ = simix_global->context_factory->create_maestro(code, maestro); - } - - maestro->simcall.issuer = maestro; - simix_global->maestro_process = maestro; -} - -} // namespace actor -} -} - -/** - * @brief Internal function to create a process. - * - * This function actually creates the process. - * It may be called when a SIMCALL_PROCESS_CREATE simcall occurs, - * or directly for SIMIX internal purposes. The sure thing is that it's called from maestro context. - * - * @return the process created - */ -smx_actor_t SIMIX_process_create(std::string name, simgrid::simix::ActorCode code, void* data, simgrid::s4u::Host* host, - std::unordered_map* properties, smx_actor_t parent_process) +ActorImplPtr ActorImpl::create(std::string name, simgrid::simix::ActorCode code, void* data, simgrid::s4u::Host* host, + std::unordered_map* properties, smx_actor_t parent_actor) { XBT_DEBUG("Start actor %s@'%s'", name.c_str(), host->get_cname()); if (host->is_off()) { - XBT_WARN("Cannot launch process '%s' on failed host '%s'", name.c_str(), host->get_cname()); + XBT_WARN("Cannot launch actor '%s' on failed host '%s'", name.c_str(), host->get_cname()); return nullptr; } - smx_actor_t process = new simgrid::kernel::actor::ActorImpl(simgrid::xbt::string(name), host); + ActorImpl* actor = new simgrid::kernel::actor::ActorImpl(simgrid::xbt::string(name), host); xbt_assert(code && host != nullptr, "Invalid parameters"); - /* Process data */ - process->set_user_data(data); - process->code = code; + /* actor data */ + actor->set_user_data(data); + actor->code = code; - if (parent_process != nullptr) - process->ppid_ = parent_process->pid_; + if (parent_actor != nullptr) + actor->ppid_ = parent_actor->pid_; - XBT_VERB("Create context %s", process->get_cname()); - process->context_ = SIMIX_context_new(std::move(code), &SIMIX_process_cleanup, process); + XBT_VERB("Create context %s", actor->get_cname()); + actor->context_ = SIMIX_context_new(std::move(code), &SIMIX_process_cleanup, actor); /* Add properties */ if (properties != nullptr) for (auto const& kv : *properties) - process->set_property(kv.first, kv.second); + actor->set_property(kv.first, kv.second); /* Add the process to its host's process list */ - host->pimpl_->process_list_.push_back(*process); + host->pimpl_->process_list_.push_back(*actor); - XBT_DEBUG("Start context '%s'", process->get_cname()); + XBT_DEBUG("Start context '%s'", actor->get_cname()); /* Now insert it in the global process list and in the process to run list */ - simix_global->process_list[process->pid_] = process; - XBT_DEBUG("Inserting %s(%s) in the to_run list", process->get_cname(), host->get_cname()); - simix_global->process_to_run.push_back(process); - intrusive_ptr_add_ref(process); + simix_global->process_list[actor->pid_] = actor; + XBT_DEBUG("Inserting %s(%s) in the to_run list", actor->get_cname(), host->get_cname()); + simix_global->process_to_run.push_back(actor); + intrusive_ptr_add_ref(actor); /* The on_creation() signal must be delayed until there, where the pid and everything is set */ - simgrid::s4u::Actor::on_creation(process->iface()); + simgrid::s4u::Actor::on_creation(actor->iface()); + + return ActorImplPtr(actor); +} + +void create_maestro(simgrid::simix::ActorCode code) +{ + /* Create maestro process and initialize it */ + smx_actor_t maestro = new simgrid::kernel::actor::ActorImpl(simgrid::xbt::string(""), /*host*/ nullptr); + + if (not code) { + maestro->context_ = SIMIX_context_new(simgrid::simix::ActorCode(), nullptr, maestro); + } else { + maestro->context_ = simix_global->context_factory->create_maestro(code, maestro); + } + + maestro->simcall.issuer = maestro; + simix_global->maestro_process = maestro; +} - return process; +} // namespace actor +} // namespace kernel } smx_actor_t SIMIX_process_attach(const char* name, void* data, const char* hostname, @@ -759,7 +750,7 @@ smx_actor_t simcall_process_create(std::string name, simgrid::simix::ActorCode c { smx_actor_t self = SIMIX_process_self(); return simgrid::simix::simcall([name, code, data, host, properties, self] { - return SIMIX_process_create(name, std::move(code), data, host, properties, self); + return simgrid::kernel::actor::ActorImpl::create(name, std::move(code), data, host, properties, self).get(); }); } diff --git a/src/simix/ActorImpl.hpp b/src/simix/ActorImpl.hpp index 6bb14de810..e258c5ca14 100644 --- a/src/simix/ActorImpl.hpp +++ b/src/simix/ActorImpl.hpp @@ -92,6 +92,9 @@ public: private: bool daemon_ = false; public: + static ActorImplPtr create(std::string name, simix::ActorCode code, void* data, s4u::Host* host, + std::unordered_map* properties, smx_actor_t parent_actor); + void daemonize(); bool is_daemon() { return daemon_; } /** Whether this actor has been daemonized */ bool is_suspended() { return suspended_; } @@ -154,10 +157,6 @@ XBT_PUBLIC void create_maestro(std::function code); typedef simgrid::kernel::actor::ActorImpl* smx_actor_t; -XBT_PRIVATE smx_actor_t SIMIX_process_create(std::string name, std::function code, void* data, sg_host_t host, - std::unordered_map* properties, - smx_actor_t parent_process); - XBT_PRIVATE void SIMIX_process_runall(); XBT_PRIVATE void SIMIX_process_kill(smx_actor_t process, smx_actor_t issuer); XBT_PRIVATE void SIMIX_process_killall(smx_actor_t issuer); diff --git a/src/smpi/colls/coll_tuned_topo.cpp b/src/smpi/colls/coll_tuned_topo.cpp index 27f20da01b..0236803ca9 100644 --- a/src/smpi/colls/coll_tuned_topo.cpp +++ b/src/smpi/colls/coll_tuned_topo.cpp @@ -380,6 +380,7 @@ ompi_coll_tuned_topo_build_bmtree( MPI_Comm comm, if( remote >= size ) remote -= size; if (childs==MAXTREEFANOUT) { XBT_DEBUG("coll:tuned:topo:build_bmtree max fanout incorrect %d needed %d", MAXTREEFANOUT, childs); + delete bmtree; return NULL; } bmtree->tree_next[childs] = remote; @@ -427,6 +428,7 @@ ompi_coll_tree_t* ompi_coll_tuned_topo_build_in_order_bmtree(MPI_Comm comm, int bmtree = new ompi_coll_tree_t; if (not bmtree) { XBT_DEBUG("coll:tuned:topo:build_bmtree PANIC out of memory"); + delete bmtree; return NULL; } diff --git a/src/smpi/colls/smpi_mvapich2_selector.cpp b/src/smpi/colls/smpi_mvapich2_selector.cpp index f3c697bf71..e755f008c8 100644 --- a/src/smpi/colls/smpi_mvapich2_selector.cpp +++ b/src/smpi/colls/smpi_mvapich2_selector.cpp @@ -201,16 +201,15 @@ int Coll_gather_mvapich2::gather(void *sendbuf, int range_threshold = 0; int range_intra_threshold = 0; long nbytes = 0; - int recvtype_size, sendtype_size; int comm_size = comm->size(); int rank = comm->rank(); if (rank == root) { - recvtype_size=recvtype->size(); - nbytes = recvcnt * recvtype_size; + int recvtype_size = recvtype->size(); + nbytes = recvcnt * recvtype_size; } else { - sendtype_size=sendtype->size(); - nbytes = sendcnt * sendtype_size; + int sendtype_size = sendtype->size(); + nbytes = sendcnt * sendtype_size; } /* Search for the corresponding system size inside the tuning table */ @@ -896,12 +895,12 @@ int Coll_scatter_mvapich2::scatter(void *sendbuf, if (comm->is_uniform()) { shmem_comm = comm->get_intra_comm(); - int local_size = shmem_comm->size(); - int i = 0; if (mv2_scatter_table_ppn_conf[0] == -1) { // Indicating user defined tuning conf_index = 0; }else{ + int local_size = shmem_comm->size(); + int i = 0; do { if (local_size == mv2_scatter_table_ppn_conf[i]) { conf_index = i; diff --git a/src/surf/HostImpl.cpp b/src/surf/HostImpl.cpp index 47154c6d25..42e84f1f87 100644 --- a/src/surf/HostImpl.cpp +++ b/src/surf/HostImpl.cpp @@ -103,8 +103,8 @@ void HostImpl::turn_on() { for (auto const& arg : actors_at_boot_) { XBT_DEBUG("Booting Actor %s(%s) right now", arg->name.c_str(), arg->host->get_cname()); - smx_actor_t actor = - SIMIX_process_create(arg->name.c_str(), arg->code, nullptr, arg->host, arg->properties.get(), nullptr); + simgrid::kernel::actor::ActorImplPtr actor = simgrid::kernel::actor::ActorImpl::create( + arg->name.c_str(), arg->code, nullptr, arg->host, arg->properties.get(), nullptr); if (arg->kill_time >= 0) actor->set_kill_time(arg->kill_time); if (arg->auto_restart) diff --git a/src/surf/sg_platf.cpp b/src/surf/sg_platf.cpp index d4872dcfbd..bc82d2dd23 100644 --- a/src/surf/sg_platf.cpp +++ b/src/surf/sg_platf.cpp @@ -452,8 +452,8 @@ void sg_platf_new_actor(simgrid::kernel::routing::ActorCreationArgs* actor) XBT_DEBUG("Process %s@%s will be started at time %f", arg->name.c_str(), arg->host->get_cname(), start_time); SIMIX_timer_set(start_time, [arg, auto_restart]() { - smx_actor_t actor = SIMIX_process_create(arg->name.c_str(), std::move(arg->code), arg->data, arg->host, - arg->properties.get(), nullptr); + simgrid::kernel::actor::ActorImplPtr actor = simgrid::kernel::actor::ActorImpl::create( + arg->name.c_str(), std::move(arg->code), arg->data, arg->host, arg->properties.get(), nullptr); if (arg->kill_time >= 0) actor->set_kill_time(arg->kill_time); if (auto_restart) @@ -463,8 +463,8 @@ void sg_platf_new_actor(simgrid::kernel::routing::ActorCreationArgs* actor) } else { // start_time <= SIMIX_get_clock() XBT_DEBUG("Starting Process %s(%s) right now", arg->name.c_str(), host->get_cname()); - smx_actor_t actor = - SIMIX_process_create(arg->name.c_str(), std::move(code), nullptr, host, arg->properties.get(), nullptr); + simgrid::kernel::actor::ActorImplPtr actor = simgrid::kernel::actor::ActorImpl::create( + arg->name.c_str(), std::move(code), nullptr, host, arg->properties.get(), nullptr); /* The actor creation will fail if the host is currently dead, but that's fine */ if (actor != nullptr) { diff --git a/teshsuite/msg/host_on_off_processes/host_on_off_processes.tesh b/teshsuite/msg/host_on_off_processes/host_on_off_processes.tesh index 8a8b2128b0..e4dfcfbbe2 100644 --- a/teshsuite/msg/host_on_off_processes/host_on_off_processes.tesh +++ b/teshsuite/msg/host_on_off_processes/host_on_off_processes.tesh @@ -15,7 +15,7 @@ $ ${bindir}/host_on_off_processes ${platfdir}/small_platform.xml 1 --log=no_loc $ ${bindir}/host_on_off_processes ${platfdir}/small_platform.xml 2 --log=no_loc > [Tremblay:test_launcher:(1) 0.000000] [msg_test/INFO] Test 2: > [Tremblay:test_launcher:(1) 0.000000] [msg_test/INFO] Turn off Jupiter -> [0.000000] [simix_process/WARNING] Cannot launch process 'process_daemon' on failed host 'Jupiter' +> [0.000000] [simix_process/WARNING] Cannot launch actor 'process_daemon' on failed host 'Jupiter' > [Tremblay:test_launcher:(1) 10.000000] [msg_test/INFO] Test 2 does not crash as it should (number of Process : 1, it should be 1) > [Tremblay:test_launcher:(1) 10.000000] [msg_test/INFO] Ok so let's turn on/off the node to see whether the process is correctly bound to Jupiter > [Tremblay:test_launcher:(1) 10.000000] [msg_test/INFO] Turn off