36 Star 56 Fork 391

OpenHarmony / arkcompiler_runtime_core

 / 详情

[Bug]: Invalid save state inputs after simplify-sb optimization

已完成
创建于  
2024-05-08 16:09

发生了什么问题?

Code

function main_run(): void {
  let c:string = "";
  for(let a = 0, b: string="string" ; a<10 ; a++, b += String.fromCharCode( (a+40) as number) ) {
    //program will pass if add a call to the string variable, e.g. console.log(c)
    c = b;
  }
  assert c == "string)*+,-./01";
}

function main() {
  for(let i = 0; i < 5000; i++) {
    main_run()
  }
}

Error

Object v8 used in v8, but not found on the path between them in the SaveState v41:
   8p.ref  Phi                        v2(bb9), v8p(bb13) -> (v8p, v12, v54, v53, v53, v53, v52, v52, v52, v80, v79, v50)

   8p.ref  Phi                        v2(bb9), v8p(bb13) -> (v8p, v12, v54, v53, v53, v53, v52, v52, v52, v80, v79, v50)

   41.     SaveState                  v30(vr10), v16(vr1), v25(bridge), v9p(vr3), v20(vr4), v160(vr5), v160(ACC), v17(vr7), v4(vr8), v30(vr9), inlining_depth=0 -> (v43, v42)                                                                 bc: 0x0000005f

Failed method: ETSGLOBAL::main_run
After pass: Inline
ASSERTION FAILED: (skipObjCheck || skipObjCheckUser || CheckObjectRec(inst, user, startBb, startInst, objectVisited.GetMarker(), &failedSs))
IN /mnt/c/Users/aWX1307677/arkcompiler/runtime_core/static_core/compiler/optimizer/ir/graph_checker.cpp:1038: CheckSaveStateInputs
ERRNO: 29 (Illegal seek)
Backtrace [tid=201083]:
#0 : 0x7fb54b1a54cb ??:??
#1 : 0x7fb54b1a542b ark::debug::AssertionFail(char const*, char const*, unsigned int, char const*)+0x1d3
#2 : 0x7fb54be248ff ark::compiler::GraphChecker::CheckSaveStateInputs()+0x5f3
#3 : 0x7fb54be1cae8 ark::compiler::GraphChecker::Check()+0x376
#4 : 0x7fb54bd5aeb0 ark::compiler::PassManager::RunPassChecker(ark::compiler::Pass*, bool, bool)+0x14c
#5 : 0x7fb54bd5ad46 ark::compiler::PassManager::RunPass(ark::compiler::Pass*, unsigned long)+0x47e
#6 : 0x7fb54bd6c46f bool ark::compiler::PassManager::RunPass<ark::compiler::Inlining>()+0x87
#7 : 0x7fb54bd68513 bool ark::compiler::Graph::RunPass<ark::compiler::Inlining>()+0x71
#8 : 0x7fb54bd61c74 ark::compiler::Pipeline::RunOptimizations()+0xe2
#9 : 0x7fb54bd65939 void ark::compiler::Pipeline::Run<(ark::compiler::TaskRunnerMode)1>(std::conditional<((ark::compiler::TaskRunnerMode)1)==((ark::compiler::TaskRunnerMode)1), ark::compiler::BackgroundCompilerTaskRunner, ark::compiler::InPlaceCompilerTaskRunner>::type)+0x321
#10: 0x7fb54bfbe536 void ark::compiler::RunOptimizations<(ark::compiler::TaskRunnerMode)1>(std::conditional<((ark::compiler::TaskRunnerMode)1)==((ark::compiler::TaskRunnerMode)1), ark::compiler::BackgroundCompilerTaskRunner, ark::compiler::InPlaceCompilerTaskRunner>::type)+0xde
#11: 0x7fb54bfb3ccc ??:??
#12: 0x7fb54bfbc255 ark::compiler::CompileInGraph<(ark::compiler::TaskRunnerMode)1>(ark::compiler::RuntimeInterface*, bool, ark::Arch, std::conditional<((ark::compiler::TaskRunnerMode)1)==((ark::compiler::TaskRunnerMode)1), ark::compiler::BackgroundCompilerTaskRunner, ark::compiler::InPlaceCompilerTaskRunner>::type, ark::compiler::JITStats*)::{lambda(ark::compiler::BackgroundCompilerTaskRunner)#1}::operator()(ark::compiler::BackgroundCompilerTaskRunner) const+0x6d
#13: 0x7fb54bfcc2e7 void std::__invoke_impl<void, ark::compiler::CompileInGraph<(ark::compiler::TaskRunnerMode)1>(ark::compiler::RuntimeInterface*, bool, ark::Arch, std::conditional<((ark::compiler::TaskRunnerMode)1)==((ark::compiler::TaskRunnerMode)1), ark::compiler::BackgroundCompilerTaskRunner, ark::compiler::InPlaceCompilerTaskRunner>::type, ark::compiler::JITStats*)::{lambda(ark::compiler::BackgroundCompilerTaskRunner)#1}&, ark::compiler::BackgroundCompilerTaskRunner>(std::__invoke_other, ark::compiler::CompileInGraph<(ark::compiler::TaskRunnerMode)1>(ark::compiler::RuntimeInterface*, bool, ark::Arch, std::conditional<((ark::compiler::TaskRunnerMode)1)==((ark::compiler::TaskRunnerMode)1), ark::compiler::BackgroundCompilerTaskRunner, ark::compiler::InPlaceCompilerTaskRunner>::type, ark::compiler::JITStats*)::{lambda(ark::compiler::BackgroundCompilerTaskRunner)#1}&, ark::compiler::BackgroundCompilerTaskRunner&&)+0x75
#14: 0x7fb54bfc9164 std::enable_if<is_invocable_r_v<void, ark::compiler::CompileInGraph<(ark::compiler::TaskRunnerMode)1>(ark::compiler::RuntimeInterface*, bool, ark::Arch, std::conditional<((ark::compiler::TaskRunnerMode)1)==((ark::compiler::TaskRunnerMode)1), ark::compiler::BackgroundCompilerTaskRunner, ark::compiler::InPlaceCompilerTaskRunner>::type, ark::compiler::JITStats*)::{lambda(ark::compiler::BackgroundCompilerTaskRunner)#1}&, ark::compiler::BackgroundCompilerTaskRunner>, void>::type std::__invoke_r<void, ark::compiler::CompileInGraph<(ark::compiler::TaskRunnerMode)1>(ark::compiler::RuntimeInterface*, bool, ark::Arch, std::conditional<((ark::compiler::TaskRunnerMode)1)==((ark::compiler::TaskRunnerMode)1), ark::compiler::BackgroundCompilerTaskRunner, ark::compiler::InPlaceCompilerTaskRunner>::type, ark::compiler::JITStats*)::{lambda(ark::compiler::BackgroundCompilerTaskRunner)#1}&, ark::compiler::BackgroundCompilerTaskRunner>(ark::compiler::CompileInGraph<(ark::compiler::TaskRunnerMode)1>(ark::compiler::RuntimeInterface*, bool, ark::Arch, std::conditional<((ark::compiler::TaskRunnerMode)1)==((ark::compiler::TaskRunnerMode)1), ark::compiler::BackgroundCompilerTaskRunner, ark::compiler::InPlaceCompilerTaskRunner>::type, ark::compiler::JITStats*)::{lambda(ark::compiler::BackgroundCompilerTaskRunner)#1}&, ark::compiler::BackgroundCompilerTaskRunner&&)+0x3b
#15: 0x7fb54bfc5d05 std::_Function_handler<void (ark::compiler::BackgroundCompilerTaskRunner), ark::compiler::CompileInGraph<(ark::compiler::TaskRunnerMode)1>(ark::compiler::RuntimeInterface*, bool, ark::Arch, std::conditional<((ark::compiler::TaskRunnerMode)1)==((ark::compiler::TaskRunnerMode)1), ark::compiler::BackgroundCompilerTaskRunner, ark::compiler::InPlaceCompilerTaskRunner>::type, ark::compiler::JITStats*)::{lambda(ark::compiler::BackgroundCompilerTaskRunner)#1}>::_M_invoke(std::_Any_data const&, ark::compiler::BackgroundCompilerTaskRunner&&)+0x3b
#16: 0x7fb54d42c2b7 std::function<void (ark::compiler::BackgroundCompilerTaskRunner)>::operator()(ark::compiler::BackgroundCompilerTaskRunner) const+0x4d
#17: 0x7fb54d42942c ark::compiler::BackgroundCompilerTaskRunner::StartTask(ark::compiler::BackgroundCompilerTaskRunner, std::function<void (ark::compiler::BackgroundCompilerTaskRunner)>)::{lambda()#1}::operator()()+0xac
#18: 0x7fb54d429a34 auto ark::compiler::copy_hooks::FakeCopyable<ark::compiler::BackgroundCompilerTaskRunner::StartTask(ark::compiler::BackgroundCompilerTaskRunner, std::function<void (ark::compiler::BackgroundCompilerTaskRunner)>)::{lambda()#1}>::operator()<>()+0x1c
#19: 0x7fb54d4360da void std::__invoke_impl<void, ark::compiler::copy_hooks::FakeCopyable<ark::compiler::BackgroundCompilerTaskRunner::StartTask(ark::compiler::BackgroundCompilerTaskRunner, std::function<void (ark::compiler::BackgroundCompilerTaskRunner)>)::{lambda()#1}>&>(std::__invoke_other, ark::compiler::copy_hooks::FakeCopyable<ark::compiler::BackgroundCompilerTaskRunner::StartTask(ark::compiler::BackgroundCompilerTaskRunner, std::function<void (ark::compiler::BackgroundCompilerTaskRunner)>)::{lambda()#1}>&)+0x24
#20: 0x7fb54d4327b8 std::enable_if<is_invocable_r_v<void, ark::compiler::copy_hooks::FakeCopyable<ark::compiler::BackgroundCompilerTaskRunner::StartTask(ark::compiler::BackgroundCompilerTaskRunner, std::function<void (ark::compiler::BackgroundCompilerTaskRunner)>)::{lambda()#1}>&>, void>::type std::__invoke_r<void, ark::compiler::copy_hooks::FakeCopyable<ark::compiler::BackgroundCompilerTaskRunner::StartTask(ark::compiler::BackgroundCompilerTaskRunner, std::function<void (ark::compiler::BackgroundCompilerTaskRunner)>)::{lambda()#1}>&>(ark::compiler::copy_hooks::FakeCopyable<ark::compiler::BackgroundCompilerTaskRunner::StartTask(ark::compiler::BackgroundCompilerTaskRunner, std::function<void (ark::compiler::BackgroundCompilerTaskRunner)>)::{lambda()#1}>&)+0x24
#21: 0x7fb54d42f361 std::_Function_handler<void (), ark::compiler::copy_hooks::FakeCopyable<ark::compiler::BackgroundCompilerTaskRunner::StartTask(ark::compiler::BackgroundCompilerTaskRunner, std::function<void (ark::compiler::BackgroundCompilerTaskRunner)>)::{lambda()#1}> >::_M_invoke(std::_Any_data const&)+0x24
#22: 0x7fb54b1b2298 ??:??
#23: 0x7fb54b1b1c7b ark::taskmanager::Task::RunTask()+0x61
#24: 0x7fb54b1c3125 ??:??
#25: 0x7fb54b1c303a ??:??
#26: 0x7fb54b1c6986 ??:??
#27: 0x7fb54b1c68d9 ??:??
#28: 0x7fb54b1c6839 ??:??
#29: 0x7fb54b1c67ee ??:??
#30: 0x7fb54b1c67ce ??:??
#31: 0x7fb54b019253 ??:??
#32: 0x7fb54ada6ac3 ??:??
#33: 0x7fb54ae38850 ??:??

期望行为是什么?

No error

如何复现该缺陷

Code

function main_run(): void {
  let c:string = "";
  for(let a = 0, b: string="string" ; a<10 ; a++, b += String.fromCharCode( (a+40) as number) ) {
    //program will pass if add a call to the string variable, e.g. console.log(c)
    c = b;
  }
  assert c == "string)*+,-./01";
}

function main() {
  for(let i = 0; i < 5000; i++) {
    main_run()
  }
}

其他补充信息

版本或分支信息

  • master
  • Release 4.1
  • Release 4.0
  • Release 3.2

评论 (1)

Mikhail Ivanov 创建了任务
Mikhail Ivanov 添加了
 
bug
标签
展开全部操作日志

感谢提交Issue!关于Issue的交互操作,请访问OpenHarmony社区支持命令清单。如果有问题,请联系 @godmiaozi @peijiajun @Ishin Pavel @Vyacheslav Cherkashin 。如果需要调整订阅PR、Issue的变更状态,请访问链接

Thanks for submitting the issue. For more commands, please visit OpenHarmony Command List. If you have any questions, please refer to committer @godmiaozi @peijiajun @Ishin Pavel @Vyacheslav Cherkashin for help. If you need to change the subscription of a Pull Request or Issue, please visit the link.

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(2)
7387629 openharmony ci 1656582662
1
https://gitee.com/openharmony/arkcompiler_runtime_core.git
git@gitee.com:openharmony/arkcompiler_runtime_core.git
openharmony
arkcompiler_runtime_core
arkcompiler_runtime_core

搜索帮助

53164aa7 5694891 3bd8fe86 5694891