52 Star 96 Fork 990

OpenHarmony/arkcompiler_runtime_core

[Bug]: Fix ArkTS Debugger shutdown

已完成
创建于  
2024-07-02 00:05

发生了什么问题?

When launching with debugger (according to guide from inspector_how_to) ArkTS VM hangs after all user-provided code is executed. Freeze ends after any action done in debugger-client, but then an error in Runtime::Shutdown appears.

期望行为是什么?

Runtime::Shutdown must execute without exceptions

如何复现该缺陷

Execute ark with debugger, run code until the end and trigger any command from client

其他补充信息

Log

$ lldb -- ./ark --log-level=info --load-runtimes=ets --interpreter-type=cpp --boot-panda-files=../plugins/ets/etsstdlib.abc --debugger-library-path=../lib/libarkinspector.so --debugger-break-on-start testing.abc ETSGLOBAL::main
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'lldb.embedded_interpreter'
(lldb) target create "./ark"
Current executable set to '/home/huawei/src/openharmony/arkcompiler/runtime_core/static_core/build_with_asio/bin/ark' (x86_64).
(lldb) settings set -- target.run-args  "--log-level=info" "--load-runtimes=ets" "--interpreter-type=cpp" "--boot-panda-files=../plugins/ets/etsstdlib.abc" "--debugger-library-path=../lib/libarkinspector.so" "--debugger-break-on-start" "testing.abc" "ETSGLOBAL::main"
(lldb) r
Process 11108 launched: '/home/huawei/src/openharmony/arkcompiler/runtime_core/static_core/build_with_asio/bin/ark' (x86_64)
[TID 002b64] I/runtime: find sigaction success
[TID 002b64] I/runtime: find sigprocmask success
[TID 002b64] I/debugger: Inspector server listening on [::]:19015
[TID 002c05] I/gc: [1] [TENURED (Threshold)] Mar 20 14:35:43.401 G1 GC freed 0(0B), 0(0B) LOS objects, 100% free, 27KB/512MB,  phase: COMMON_PAUSE paused: 434.896us phase: REMARK_PAUSE paused: 18.759us total: 624.651us
[TID 002c1b] I/debugger: connect: WebSocket Connection [::ffff:127.0.0.1]:40608 v13 "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" / 101
[TID 002c1b] I/common: JsonParser: 	Successfully parsed JSON-object
[TID 002c1b] I/common: JsonParser: Successfully parsed JSON-object
[TID 002c1b] I/common: JsonParser: Successfully parsed JSON-object
[TID 002c1b] I/common: JsonParser: Successfully parsed JSON-object
[TID 002c1b] W/debugger: Unsupported method: {"id":4,"method":"Debugger.setAsyncCallStackDepth","params":{"maxDepth":32}}
[TID 002c1b] I/common: JsonParser: 	Successfully parsed JSON-object
[TID 002c1b] W/debugger: Unsupported method: {"id":5,"method":"Profiler.enable","params":{}}
[TID 002c1b] I/common: JsonParser: Successfully parsed JSON-object
[TID 002c1b] W/debugger: Unsupported method: {"id":6,"method":"Debugger.setBlackboxPatterns","params":{"patterns":["/node_modules/|/bower_components/"]}}
[TID 002c1b] I/common: JsonParser: 	Successfully parsed JSON-object
[TID 002c1b] I/common: JsonParser: Successfully parsed JSON-object
[TID 002c1b] I/common: JsonParser: Successfully parsed JSON-object
[TID 002c1b] I/common: JsonParser: Successfully parsed JSON-object
1
4
[TID 002c05] I/gc: [2] [TENURED (Threshold)] Mar 20 14:35:50.665 G1 GC freed 1(0B), 0(0B) LOS objects, 100% free, 34KB/512MB,  phase: COMMON_PAUSE paused: 394.978us phase: REMARK_PAUSE paused: 19.532us total: 556.024us
"abc"
"abcd"
1
2
Process 11108 stopped
* thread #1, name = 'ark', stop reason = signal SIGSTOP
    frame #0: 0x00007ffff6491117 libc.so.6`__GI___futex_abstimed_wait_cancelable64 at futex-internal.c:57:12
(lldb) bt
* thread #1, name = 'ark', stop reason = signal SIGSTOP
  * frame #0: 0x00007ffff6491117 libc.so.6`__GI___futex_abstimed_wait_cancelable64 at futex-internal.c:57:12
    frame #1: 0x00007ffff64910e9 libc.so.6`__GI___futex_abstimed_wait_cancelable64 at futex-internal.c:87:9
    frame #2: 0x00007ffff64910e9 libc.so.6`__GI___futex_abstimed_wait_cancelable64(futex_word=0x00007fffe3fff910, expected=11291, clockid=<unavailable>, abstime=0x0000000000000000, private=<unavailable>) at futex-internal.c:139:10
    frame #3: 0x00007ffff6496624 libc.so.6`__pthread_clockjoin_ex(threadid=140737018590784, thread_return=0x0000000000000000, clockid=0, abstime=0x0000000000000000, block=<unavailable>) at pthread_join_common.c:105:14
    frame #4: 0x00007ffff68dc2c7 libstdc++.so.6`std::thread::join() + 23
    frame #5: 0x00007ffff011a8c4 libarkinspector.so`ark::tooling::inspector::Inspector::~Inspector(this=0x00007ffff0175fc0) at inspector.cpp:94:23
    frame #6: 0x00007ffff0114715 libarkinspector.so`::StopDebugger() [inlined] std::_Optional_payload_base<ark::tooling::inspector::Inspector>::_M_destroy(this=<unavailable>) at optional:260:35
    frame #7: 0x00007ffff0114702 libarkinspector.so`::StopDebugger() [inlined] std::_Optional_payload_base<ark::tooling::inspector::Inspector>::_M_reset(this=<unavailable>) at optional:280:14
    frame #8: 0x00007ffff0114702 libarkinspector.so`::StopDebugger() [inlined] std::_Optional_base_impl<ark::tooling::inspector::Inspector, std::_Optional_base<ark::tooling::inspector::Inspector, false, false> >::_M_reset(this=<unavailable>) at optional:430:53
    frame #9: 0x00007ffff0114702 libarkinspector.so`::StopDebugger() [inlined] std::optional<ark::tooling::inspector::Inspector>::reset(this=<unavailable>) at optional:1005:66
    frame #10: 0x00007ffff0114702 libarkinspector.so`::StopDebugger() at init.cpp:58:22
    frame #11: 0x00007ffff79d344e libarkruntime.so`ark::DefaultDebuggerAgent::CallUnloadCallback(this=<unavailable>, resolvedFunction=<unavailable>) at default_debugger_agent.cpp:69:63
    frame #12: 0x00007ffff79d20ab libarkruntime.so`ark::LibraryAgent::Unload(this=0x00007ffff538a800) at loadable_agent.cpp:69:28
    frame #13: 0x00007ffff79d3367 libarkruntime.so`ark::DefaultDebuggerAgent::Unload(this=0x00007ffff538a800) at default_debugger_agent.cpp:42:39
    frame #14: 0x00007ffff77cd94c libarkruntime.so`std::_Sp_counted_deleter<ark::DefaultDebuggerAgent*, std::shared_ptr<ark::LoadableAgent> ark::LibraryAgentLoader<ark::DefaultDebuggerAgent, false>::LoadInstance<>()::'lambda'(ark::DefaultDebuggerAgent*), std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() [inlined] std::shared_ptr<ark::LoadableAgent> ark::LibraryAgentLoader<ark::DefaultDebuggerAgent, false>::LoadInstance<>(ptr=0x00007ffff538a800, __closure=<unavailable>)::'lambda'(ark::DefaultDebuggerAgent*)::operator()(ark::DefaultDebuggerAgent*) const at loadable_agent.h:96:24
    frame #15: 0x00007ffff77cd943 libarkruntime.so`std::_Sp_counted_deleter<ark::DefaultDebuggerAgent*, std::shared_ptr<ark::LoadableAgent> ark::LibraryAgentLoader<ark::DefaultDebuggerAgent, false>::LoadInstance<>()::'lambda'(ark::DefaultDebuggerAgent*), std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_M_dispose(this=<unavailable>) at shared_ptr_base.h:442:25
    frame #16: 0x00007ffff78f0af7 libarkruntime.so`ark::Runtime::Shutdown() [inlined] std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(this=0x000000010009f980) at shared_ptr_base.h:168:16
    frame #17: 0x00007ffff78f0adf libarkruntime.so`ark::Runtime::Shutdown() [inlined] std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(this=0x00007ffffffee878, __in_chrg=<unavailable>) at shared_ptr_base.h:705:21
    frame #18: 0x00007ffff78f0adf libarkruntime.so`ark::Runtime::Shutdown() [inlined] std::__shared_ptr<ark::LoadableAgent, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr(this=0x00007ffffffee870, __in_chrg=<unavailable>) at shared_ptr_base.h:1154:7
    frame #19: 0x00007ffff78f0adf libarkruntime.so`ark::Runtime::Shutdown() [inlined] std::__shared_ptr<ark::LoadableAgent, (__gnu_cxx::_Lock_policy)2>::reset(this=<unavailable>) at shared_ptr_base.h:1272:9
    frame #20: 0x00007ffff78f0adf libarkruntime.so`ark::Runtime::Shutdown() [inlined] ark::PandaVM::UnloadDebuggerAgent(this=<unavailable>) at panda_vm.h:210:29
    frame #21: 0x00007ffff78f0adf libarkruntime.so`ark::Runtime::Shutdown(this=0x000000010007b4d0) at runtime.cpp:1227:34
    frame #22: 0x00007ffff78f99ec libarkruntime.so`ark::Runtime::DestroyUnderLockHolder() at runtime.cpp:390:29
    frame #23: 0x00007ffff78f9c65 libarkruntime.so`ark::Runtime::Destroy() at runtime.cpp:468:27
    frame #24: 0x000000010001cc6b ark`ark::Main(argc=9, argv=<unavailable>) at panda.cpp:205:26
    frame #25: 0x000000010001d0f6 ark`main(argc=<unavailable>, argv=<unavailable>) at panda.cpp:216:21
    frame #26: 0x00007ffff6429d90 libc.so.6`__libc_start_call_main(main=(ark`main at panda.cpp:215:1), argc=9, argv=0x00007fffffffdc08) at libc_start_call_main.h:58:16
    frame #27: 0x00007ffff6429e40 libc.so.6`__libc_start_main_impl(main=(ark`main at panda.cpp:215:1), argc=9, argv=0x00007fffffffdc08, init=0x00007ffff7ffd040, fini=<unavailable>, rtld_fini=<unavailable>, stack_end=0x00007fffffffdbf8) at libc-start.c:392:3
    frame #28: 0x000000010001b155 ark`_start + 37
(lldb) c
Process 11108 resuming
[TID 002c1b] I/common: JsonParser: Successfully parsed JSON-object
[TID 002c1b] W/debugger: Unsupported method: {"id":11,"method":"Debugger.setSkipAllPauses","params":{"skip":false}}
[TID 002c1b] I/common: JsonParser: 	Successfully parsed JSON-object
Process 11108 stopped
* thread #1, name = 'ark', stop reason = signal SIGSEGV: invalid address (fault address: 0x528)
    frame #0: 0x00007ffff77cb60b libarkruntime.so`ark::MutatorLock::HasLock() const [inlined] ark::Thread::GetLockState(this=0x0000000000000000) const at thread.h:320:16
   317 	#ifndef NDEBUG
   318 	    MutatorLock::MutatorLockState GetLockState() const
   319 	    {
-> 320 	        return lockState_;
   321 	    }
   322 	
   323 	    void SetLockState(MutatorLock::MutatorLockState state)

This issue continues I9A6S4

版本或分支信息

  • master
  • Release 4.1
  • Release 4.0
  • Release 3.2

评论 (1)

slynkodenis 创建了任务 12个月前
slynkodenis 添加了
 
bug
标签
12个月前
展开全部操作日志

感谢提交Issue!关于Issue的交互操作,请访问OpenHarmony社区支持命令清单。如果有问题,请联系 @godmiaozi @peijiajun @Prof1983 @v-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 @Prof1983 @v-cherkashin for help. If you need to change the subscription of a Pull Request or Issue, please visit the link.

openharmony_ci 添加了
 
waiting_for_assign
标签
12个月前
slynkodenis 修改了描述 12个月前
slynkodenis 通过合并 Pull Request !1980: [ArkTS] Fix debugger shutdown任务状态待办的 修改为已完成 10个月前

登录 后才可以发表评论

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

搜索帮助