Skip to content

Commit

Permalink
#2092: fix msg use after move
Browse files Browse the repository at this point in the history
  • Loading branch information
stmcgovern committed May 30, 2023
1 parent b54f36f commit 91f2b6b
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 10 deletions.
3 changes: 2 additions & 1 deletion src/vt/collective/reduce/reduce.impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,7 @@ void Reduce::startReduce(detail::ReduceStamp id, bool use_num_contrib) {
);

if (ready) {
auto saved_msg=state.msgs[0];
// Combine messages
if (state.msgs.size() > 1) {
auto size = state.msgs.size();
Expand Down Expand Up @@ -263,7 +264,7 @@ void Reduce::startReduce(detail::ReduceStamp id, bool use_num_contrib) {

// Send to parent
// Collection is of MsgPtr<ReduceMsg>, re-type and drop collection owner.
auto msg = state.msgs[0];
auto msg = saved_msg;
MsgPtr<MsgT> typed_msg = msg.template to<MsgT>();
state.msgs.clear();
state.num_contrib_ = 1;
Expand Down
18 changes: 9 additions & 9 deletions src/vt/topos/location/location.impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -550,24 +550,26 @@ void EntityLocationCoord<EntityID>::routeMsgNode(
theTerm()->produce(epoch);

auto trigger_msg_handler_action = [=](EntityID const& hid, MsgSharedPtr<MessageT>&& m) mutable {
bool const& has_handler = msg->hasHandler();
auto const& from = msg->getLocFromNode();
bool const& has_handler = m->hasHandler();
auto const& from = m->getLocFromNode();
auto ask_node = m->getAskNode();
if (has_handler) {
auto const handler = msg->getHandler();
auto const handler = m->getHandler();

vt_debug_print(
verbose, location,
"EntityLocationCoord: apply direct handler action: "
"id={}, from={}, handler={}, ref={}\n",
hid, from, handler, envelopeGetRef(msg->env)
hid, from, handler, envelopeGetRef(m->env)
);

obj_context_ = local_registered_.find(hid)->second;
obj_context_ = local_registered_.find(hid)->second;
runnable::makeRunnable(std::move(m), true, handler, from)
.withTDEpochFromMsg()
.run();
obj_context_ = nullptr;
} else {
obj_context_ = nullptr;
}
else {
auto reg_han_iter = local_registered_msg_han_.find(hid);
vtAssert(
reg_han_iter != local_registered_msg_han_.end(),
Expand All @@ -580,8 +582,6 @@ void EntityLocationCoord<EntityID>::routeMsgNode(
reg_han_iter->second.applyRegisteredActionMsg(m.get());
}

auto ask_node = m->getAskNode();

if (ask_node != uninitialized_destination) {
auto delivered_node = theContext()->getNode();
sendEagerUpdate(hid, ask_node, home_node, delivered_node);
Expand Down

0 comments on commit 91f2b6b

Please sign in to comment.