HarmonyOS鸿蒙Next中CPP内存回收引起崩溃问题
HarmonyOS鸿蒙Next中CPP内存回收引起崩溃问题 API 14,这种系统CPP的问题如何分析,GC怎么还崩溃了:
Reason:Signal:SIGSEGV(SEGV_MAPERR)@000000000000000000 probably caused by NULL pointer dereference
Fault thread info:
Tid:28805, Name:OS_GC_Thread
#00 pc 000000000037b18c /system/lib64/platformsdk/libark_jsruntime.so(panda::ecmascript::EcmaStringTable::SweepWeakRef(std::__h::function<panda::ecmascript::TaggedObject* (panda::ecmascript::TaggedObject*)> const&, unsigned int)+280)(3dfeb6ccfb1b33033e58ebb6dcb7efb3)
#01 pc 000000000037b3f0 /system/lib64/platformsdk/libark_jsruntime.so(panda::ecmascript::EcmaStringTableCleaner::SweepWeakRefTask::Run(unsigned int)+84)(3dfeb6ccfb1b33033e58ebb6dcb7efb3)
#02 pc 0000000000656f04 /system/lib64/platformsdk/libark_jsruntime.so(panda::ecmascript::Runner::Run(unsigned int)+188)(3dfeb6ccfb1b33033e58ebb6dcb7efb3)
#03 pc 0000000000656fd4 /system/lib64/platformsdk/libark_jsruntime.so(3dfeb6ccfb1b33033e58ebb6dcb7efb3)
#04 pc 00000000001badf4 /system/lib/ld-musl-aarch64.so.1(start+236)(5d3371054f92e8925889547e8114fb59)
Registers:
x0:0000000000000000 x1:0000007ede4666d8 x2:0000000000000050 x3:000000000000000a
x4:0000005baa0ae198 x5:0000005baa0ae1e8 x6:0000005babd63280 x7:0000005babd63340
x8:0000000000000217 x9:0000000000000c83 x10:0000000000000000 x11:0000000000000005
x12:0000005baa4a1280 x13:0000000000000000 x14:0000005bab655ac0 x15:00000000000002a1
x16:0000005b9d1da1b8 x17:0000005b116f5148 x18:0000000000000005 x19:0000007ede5693d0
x20:0000005babea2280 x21:0000005b9cb21e6c x22:0000005b9cb22082 x23:0000005ceef7d2e0
x24:0000002e8e070258 x25:0000005b11c47188 x26:0000005b11c47178 x27:0000005b9d1dffa0
x28:0000005b9d1dffa8 x29:0000007ede4667f0
lr:0000005b9ce3b10c sp:0000007ede4666d0
Other thread info:
Tid:26604, Name:m.unionpay.grid
#00 pc 00000000001b66e4 /system/lib/ld-musl-aarch64.so.1(__timedwait_cp+192)(5d3371054f92e8925889547e8114fb59)
#01 pc 00000000001bc6fc /system/lib/ld-musl-aarch64.so.1(__pthread_mutex_timedlock_inner+592)(5d3371054f92e8925889547e8114fb59)
#02 pc 00000000001d946c /system/lib/ld-musl-aarch64.so.1(PauseMainThreadHandler+76)(5d3371054f92e8925889547e8114fb59)
#03 pc 0000000000001a14 [shmm]
#04 pc 0000000000001468 [shmm]
#05 pc 00000000001b66dc /system/lib/ld-musl-aarch64.so.1(__timedwait_cp+184)(5d3371054f92e8925889547e8114fb59)
#06 pc 00000000001b86e8 /system/lib/ld-musl-aarch64.so.1(__pthread_cond_timedwait+188)(5d3371054f92e8925889547e8114fb59)
#07 pc 00000000004fd2ac /system/lib64/platformsdk/libark_jsruntime.so(panda::ecmascript::SharedHeap::WaitGCFinished(panda::ecmascript::JSThread*)+208)(3dfeb6ccfb1b33033e58ebb6dcb7efb3)
#08 pc 00000000004f6b90 /system/lib64/platformsdk/libark_jsruntime.so(void panda::ecmascript::SharedHeap::CollectGarbage<(panda::ecmascript::TriggerGCType)6, (panda::ecmascript::GCReason)2>(panda::ecmascript::JSThread*)+160)(3dfeb6ccfb1b33033e58ebb6dcb7efb3)
#09 pc 00000000004f6570 /system/lib64/platformsdk/libark_jsruntime.so(panda::ecmascript::IdleGCTrigger::TryTriggerIdleGC(panda::JSNApi::TRIGGER_IDLE_GC_TYPE)+2048)(3dfeb6ccfb1b33033e58ebb6dcb7efb3)
#10 pc 00000000005b0400 /system/lib64/platformsdk/libark_jsruntime.so(panda::JSNApi::TriggerIdleGC(panda::ecmascript::EcmaVM const*, panda::JSNApi::TRIGGER_IDLE_GC_TYPE)+224)(3dfeb6ccfb1b33033e58ebb6dcb7efb3)
#11 pc 000000000001bdb4 /system/lib64/chipset-pub-sdk/libeventhandler.z.so(OHOS::AppExecFwk::EventHandler::DistributeEvent(std::__h::unique_ptr<OHOS::AppExecFwk::InnerEvent, void (*)(OHOS::AppExecFwk::InnerEvent*)> const&)+1140)(08be043ac02888e9de5e141d714bb4b6)
#12 pc 000000000002d690 /system/lib64/chipset-pub-sdk/libeventhandler.z.so(OHOS::AppExecFwk::(anonymous namespace)::EventRunnerImpl::ExecuteEventHandler(std::__h::unique_ptr<OHOS::AppExecFwk::InnerEvent, void (*)(OHOS::AppExecFwk::InnerEvent*)>&)+348)(08be043ac02888e9de5e141d714bb4b6)
#13 pc 000000000002cf4c /system/lib64/chipset-pub-sdk/libeventhandler.z.so(OHOS::AppExecFwk::(anonymous namespace)::EventRunnerImpl::Run()+908)(08be043ac02888e9de5e141d714bb4b6)
#14 pc 00000000000302f0 /system/lib64/chipset-pub-sdk/libeventhandler.z.so(OHOS::AppExecFwk::EventRunner::Run()+528)(08be043ac02888e9de5e141d714bb4b6)
#15 pc 00000000000b60d4 /system/lib64/platformsdk/libappkit_native.z.so(OHOS::AppExecFwk::MainThread::Start()+400)(f88acc4ea28353a812c7abcab98c8136)
#16 pc 0000000000004e34 /system/lib64/appspawn/appspawn/libappspawn_ace.z.so(RunChildProcessor(AppSpawnContent*, AppSpawnClient*)+568)(d3f6e56ad6a96018b92b82ae93f9f1a7)
#17 pc 000000000000bf5c /system/bin/appspawn(AppSpawnChild+496)(041468d906e6b2a14f34b4521e4e06b4)
#18 pc 0000000000015de8 /system/bin/appspawn(ProcessSpawnReqMsg+3168)(041468d906e6b2a14f34b4521e4e06b4)
#19 pc 0000000000013a38 /system/bin/appspawn(OnReceiveRequest+132)(041468d906e6b2a14f34b4521e4e06b4)
#20 pc 0000000000016dcc /system/lib64/chipset-pub-sdk/libbegetutil.z.so(HandleRecvMsg_+344)(6807ec574aea93e64c71ccb52611b50d)
#21 pc 00000000000168a0 /system/lib64/chipset-pub-sdk/libbegetutil.z.so(HandleStreamEvent_+192)(6807ec574aea93e64c71ccb52611b50d)
#22 pc 0000000000013f80 /system/lib64/chipset-pub-sdk/libbegetutil.z.so(ProcessEvent+88)(6807ec574aea93e64c71ccb52611b50d)
#23 pc 0000000000013b3c /system/lib64/chipset-pub-sdk/libbegetutil.z.so(RunLoop_+308)(6807ec574aea93e64c71ccb52611b50d)
#24 pc 0000000000011858 /system/bin/appspawn(AppSpawnRun+212)(041468d906e6b2a14f34b4521e4e06b4)
#25 pc 000000000000f168 /system/bin/appspawn(main+764)(041468d906e6b2a14f34b4521e4e06b4)
#26 pc 00000000000a117c /system/lib/ld-musl-aarch64.so.1(libc_start_main_stage2+64)(5d3371054f92e8925889547e8114fb59)
Tid:28788, Name:OS_IPC_0_28788
#00 pc 00000000001734fc /system/lib/ld-musl-aarch64.so.1(ioctl+176)(5d3371054f92e8925889547e8114fb59)
#01 pc 0000000000007600 /system/lib64/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::WriteBinder(unsigned long, void*)+108)(bfa15156db8c2784e1ff199feedbdf3a)
#02 pc 000000000005e730 /system/lib64/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDriver(bool)+300)(bce12661b751aea2405bb6ea71ff632a)
#03 pc 000000000005ea80 /system/lib64/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop()+76)(bce12661b751aea2405bb6ea71ff632a)
#04 pc 0000000000060a88 /system/lib64/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::JoinThread(bool)+80)(bce12661b751aea2405bb6ea71ff632a)
#05 pc 00000000000573ec /system/lib64/platformsdk/libipc_core.z.so(OHOS::IPCWorkThread::ThreadHandler(void*)+856)(bce12661b751aea2405bb6ea71ff632a)
#06 pc 00000000001badf4 /system/lib/ld-musl-aarch64.so.1(start+236)(5d3371054f92e8925889547e8114fb59)
Tid:28790, Name:OS_IPC_1_28790
#00 pc 00000000001734fc /system/lib/ld-musl-aarch64.so.1(ioctl+176)(5d3371054f92e8925889547e8114fb59)
#01 pc 0000000000007600 /system/lib64/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::WriteBinder(unsigned long, void*)+108)(bfa15156db8c2784e1ff199feedbdf3a)
#02 pc 000000000005e730 /system/lib64/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDriver(bool)+300)(bce12661b751aea2405bb6ea71ff632a)
#03 pc 000000000005ea80 /system/lib64/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop()+76)(bce12661b751aea2405bb6ea71ff632a)
#04 pc 0000000000060a88 /system/lib64/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::JoinThread(bool)+80)(bce12661b751aea2405bb6ea71ff632a)
#05 pc 00000000000573ec /system/lib64/platformsdk/libipc_core.z.so(OHOS::IPCWorkThread::ThreadHandler(void*)+856)(bce12661b751aea2405bb6ea71ff632a)
#06 pc 00000000001badf4 /system/lib/ld-musl-aarch64.so.1(start+236)(5d3371054f92e8925889547e8114fb59)
Tid:28792, Name:OS_DfxWatchdog
更多关于HarmonyOS鸿蒙Next中CPP内存回收引起崩溃问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
Device info:HUAWEI Mate 60 Pro
Build info:ALN-AL80 5.0.0.126(SP8C00E126R4P28log)
Fingerprint:0fa2c9645154c0aa804ddadf16b55435c79af97c462ac6b74166bb45dc47556c
Module name:com.unionpay.grid
Version:0.2.2
VersionCode:21
PreInstalled:No
Foreground:Yes
Timestamp:2025-04-15 09:49:22.186
Pid:52630
Uid:20020188
Process name:com.unionpay.grid
Process life time:1138s
Reason:Signal:SIGSEGV(SEGV_MAPERR)@000000000000000000 probably caused by NULL pointer dereference
Fault thread info:
“modelVersion”: “5.0.0”, “name”: “锦绣探店”, “version”: “0.2.2”, “description”: “Please describe the basic information.”, “main”: “”, “author”: “”, “license”: “”, “dependencies”: { “@ohos/flutter_ohos”: “file:./har/flutter.har” },
您好请提供一下日志中应该有的,应用名,和版本信息
在HarmonyOS鸿蒙Next中,C++内存回收引发崩溃通常是由于以下原因:
- 野指针:对象被释放后仍被访问;
- 双重释放:同一内存被多次释放;
- 内存泄漏:未释放不再使用的内存。
建议使用智能指针(如std::shared_ptr
、std::unique_ptr
)管理内存,避免手动释放,并确保对象生命周期管理正确。调试时可使用工具如Valgrind或AddressSanitizer检测内存问题。