diff --git a/runtime/executor/method.cpp b/runtime/executor/method.cpp index 0ddd34f7cd3..606b2460155 100644 --- a/runtime/executor/method.cpp +++ b/runtime/executor/method.cpp @@ -1521,8 +1521,17 @@ Error Method::execute_instruction() { // We know that instr_args_as_FreeCall is non-null because it was checked // at init time. auto free_call = instruction->instr_args_as_FreeCall(); - auto t = mutable_value(free_call->value_index()).toTensor(); - internal::reset_data_ptr(t); + auto& val = mutable_value(free_call->value_index()); + if (val.isTensor()) { + auto& t = val.toTensor(); + internal::reset_data_ptr(t); + } else { + ET_LOG( + Error, + "FreeCall target at index %u is not a Tensor", + static_cast(free_call->value_index())); + err = Error::InvalidProgram; + } } break; default: ET_LOG(