!43039 fix mindir fuzz test

Merge pull request !43039 from lianliguang/fix-mindir-core-dump
This commit is contained in:
i-robot 2022-10-09 09:32:08 +00:00 committed by Gitee
commit 972fffc84b
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 26 additions and 9 deletions

View File

@ -1431,7 +1431,9 @@ bool SetMindIRGraphAction(const ResourcePtr &resource) {
(void)std::transform(inputs.begin(), inputs.end(), std::back_inserter(func_args), (void)std::transform(inputs.begin(), inputs.end(), std::back_inserter(func_args),
[](const AnfNodePtr &arg) -> AbstractBasePtr { [](const AnfNodePtr &arg) -> AbstractBasePtr {
MS_EXCEPTION_IF_NULL(arg); MS_EXCEPTION_IF_NULL(arg);
return arg->abstract()->Broaden(); auto abs = arg->abstract();
MS_EXCEPTION_IF_NULL(abs);
return abs->Broaden();
}); });
bool is_equal_input_args = true; bool is_equal_input_args = true;

View File

@ -188,18 +188,27 @@ std::string ParseCNodeName(const string &name) {
#define PARSE_MINDIR_ATTR_IN_INT_FORM(type, valuetype) \ #define PARSE_MINDIR_ATTR_IN_INT_FORM(type, valuetype) \
ValuePtr ParseAttrInScalar_##type##_##valuetype(const mind_ir::AttributeProto &attr_proto, int index) { \ ValuePtr ParseAttrInScalar_##type##_##valuetype(const mind_ir::AttributeProto &attr_proto, int index) { \
if (attr_proto.ints_size() > index) { \
auto value = static_cast<valuetype>(attr_proto.ints(index)); \ auto value = static_cast<valuetype>(attr_proto.ints(index)); \
return MakeValue<valuetype>(value); \ return MakeValue<valuetype>(value); \
} \ } \
MS_LOG(EXCEPTION) << "Parse MindIR attr failed."; \
} \
ValuePtr ParseAttrInSingleScalar_##type##_##valuetype(const mind_ir::AttributeProto &attr_proto) { \ ValuePtr ParseAttrInSingleScalar_##type##_##valuetype(const mind_ir::AttributeProto &attr_proto) { \
if (attr_proto.has_i()) { \
auto value = static_cast<valuetype>(attr_proto.i()); \ auto value = static_cast<valuetype>(attr_proto.i()); \
return MakeValue<valuetype>(value); \ return MakeValue<valuetype>(value); \
} \
MS_LOG(EXCEPTION) << "Parse MindIR attr failed."; \
} }
#define PARSE_MINDIR_ATTR_IN_SCALAR_FORM(type, valuetype) \ #define PARSE_MINDIR_ATTR_IN_SCALAR_FORM(type, valuetype) \
ValuePtr ParseAttrInScalar_##type##_##valuetype(const mind_ir::AttributeProto &attr_proto, int index) { \ ValuePtr ParseAttrInScalar_##type##_##valuetype(const mind_ir::AttributeProto &attr_proto, int index) { \
if (attr_proto.type##s_size() > index) { \
auto value = static_cast<valuetype>(attr_proto.type##s(index)); \ auto value = static_cast<valuetype>(attr_proto.type##s(index)); \
return MakeValue<valuetype>(value); \ return MakeValue<valuetype>(value); \
} \
MS_LOG(EXCEPTION) << "Parse MindIR attr failed."; \
} }
PARSE_MINDIR_ATTR_IN_INT_FORM(int8_t, int8_t) PARSE_MINDIR_ATTR_IN_INT_FORM(int8_t, int8_t)
@ -1318,6 +1327,10 @@ CNodePtr MSANFModelParser::BuildCNodeForFuncGraph(const FuncGraphPtr &outputFunc
MS_LOG(ERROR) << "Get CNode op_type failed!"; MS_LOG(ERROR) << "Get CNode op_type failed!";
return nullptr; return nullptr;
} }
if (node_proto.output_size() <= 0) {
MS_LOG(ERROR) << "Get CNode out failed!";
return nullptr;
}
const std::string &node_name = node_proto.output(0); const std::string &node_name = node_proto.output(0);
MS_LOG(DEBUG) << "Process CNode: " << node_name; MS_LOG(DEBUG) << "Process CNode: " << node_name;
// Build inputs. // Build inputs.
@ -1385,7 +1398,8 @@ bool MSANFModelParser::BuildReturnForFuncGraph(const FuncGraphPtr &outputFuncGra
return_node->set_load_flag(true); return_node->set_load_flag(true);
outputFuncGraph->set_return(return_node); outputFuncGraph->set_return(return_node);
MS_LOG(DEBUG) << "Construct funcgraph finined, all success."; MS_LOG(DEBUG) << "Construct funcgraph finined, all success.";
} else { return true;
} else if (importProto.output_size() == 1) {
inputs.push_back(NewValueNode(prim::kPrimReturn)); inputs.push_back(NewValueNode(prim::kPrimReturn));
auto nodeName = importProto.output(0).name(); auto nodeName = importProto.output(0).name();
auto anfNode = GetAnfNode(nodeName); auto anfNode = GetAnfNode(nodeName);
@ -1400,9 +1414,10 @@ bool MSANFModelParser::BuildReturnForFuncGraph(const FuncGraphPtr &outputFuncGra
return_node->set_load_flag(true); return_node->set_load_flag(true);
outputFuncGraph->set_return(return_node); outputFuncGraph->set_return(return_node);
MS_LOG(DEBUG) << "Construct funcgraph finined, all success!"; MS_LOG(DEBUG) << "Construct funcgraph finined, all success!";
return true;
} }
return true; return false;
} }
bool MSANFModelParser::ImportNodesForGraph(const FuncGraphPtr &outputFuncGraph, bool MSANFModelParser::ImportNodesForGraph(const FuncGraphPtr &outputFuncGraph,