From a146727edda07227f29ef63b37c5c8daf0e8119c Mon Sep 17 00:00:00 2001 From: Niu Chong Date: Mon, 26 Nov 2018 14:27:48 +0800 Subject: [PATCH] fix(actor.cpp): never access regst after sending it to producer (#1531) Former-commit-id: 5eaa334ae0f86c301cd3d03f4db82a21d03a40af --- oneflow/core/actor/actor.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/oneflow/core/actor/actor.cpp b/oneflow/core/actor/actor.cpp index 0f1c70f46d..01f8f3f2da 100644 --- a/oneflow/core/actor/actor.cpp +++ b/oneflow/core/actor/actor.cpp @@ -325,8 +325,9 @@ void Actor::AsyncSendConsumedCtrlRegstMsgToProducer() { CHECK_GE(reg_deq.size(), returned_regst_num); for (size_t i = 0; i < returned_regst_num; ++i) { Regst* regst = reg_deq.at(i); - AsyncSendMsg(ActorMsg::BuildRegstMsgToProducer(actor_id_, regst->producer_actor_id(), regst)); + // must access regst before sending it to producer regst_desc_ids.push_back(regst->regst_desc_id()); + AsyncSendMsg(ActorMsg::BuildRegstMsgToProducer(actor_id_, regst->producer_actor_id(), regst)); } }); naive_consumed_rs_.PopFrontRegsts(regst_desc_ids); @@ -431,8 +432,9 @@ void Actor::HandleConsumedNaiveDataRegstToProducer(std::function I naive_consumed_rs_.ForEachFrontRegst([&](Regst* regst) { if (regst->regst_desc()->regst_desc_type().has_data_regst_desc()) { if (IsAllowedRegst(regst) == false) { return; } - AsyncSendRegstMsgToProducer(regst); + // must access regst before sending it to producer regst_desc_ids.push_back(regst->regst_desc_id()); + AsyncSendRegstMsgToProducer(regst); } }); naive_consumed_rs_.PopFrontRegsts(regst_desc_ids); -- GitLab