稳定性 cppcrash问题,进程:com.ohos.updateapp 崩溃so: libunwinder.z.so
·
cppcrash stack 信息
Build info:GCH-XXJ-V1.0.0.1
Fingerprint:f89c9e19db58758a95602a195836ec4569cf5d5aefef8c4a4f5ef0df6cd21a27
Module name:com.ohos.updateapp
Version:204.0.0.500
VersionCode:2040000500
PreInstalled:Yes
Foreground:Yes
Timestamp:2025-11-03 06:38:01.000
Pid:13353
Uid:20010018
Process name:com.ohos.updateapp
Process life time:1191s
Reason:Signal:SIGSEGV(SEGV_MAPERR)@0xf08b9924
Fault thread info:
Tid:13807, Name:OS_FFRT_2_2
#00 pc 0001ccb8 /system/lib/chipset-pub-sdk/libunwinder.z.so(OHOS::HiviewDFX::LocalThreadContextMix::AccessMem(unsigned int, unsigned int*)+44)(9be4933031e5ae08ce0aecc9391359a4)
#01 pc 00017bd7 /system/lib/chipset-pub-sdk/libunwinder.z.so(OHOS::HiviewDFX::DfxMemory::Read(unsigned int&, void*, unsigned int, bool)+222)(9be4933031e5ae08ce0aecc9391359a4)
#02 pc 0001460d /system/lib/chipset-pub-sdk/libunwinder.z.so(OHOS::HiviewDFX::DfxInstructions::Flush(OHOS::HiviewDFX::DfxRegs&, std::__h::shared_ptrOHOS::HiviewDFX::DfxMemory, unsigned int, OHOS::HiviewDFX::RegLoc, unsigned int&)+96)(9be4933031e5ae08ce0aecc9391359a4)
#03 pc 00014a4d /system/lib/chipset-pub-sdk/libunwinder.z.so(OHOS::HiviewDFX::DfxInstructions::Apply(std::__h::shared_ptrOHOS::HiviewDFX::DfxMemory, OHOS::HiviewDFX::DfxRegs&, OHOS::HiviewDFX::RegLocState&, unsigned short&)+208)(9be4933031e5ae08ce0aecc9391359a4)
#04 pc 00020b09 /system/lib/chipset-pub-sdk/libunwinder.z.so(OHOS::HiviewDFX::Unwinder::Impl::Apply(std::__h::shared_ptrOHOS::HiviewDFX::DfxRegs, std::__h::shared_ptrOHOS::HiviewDFX::RegLocState)+92)(9be4933031e5ae08ce0aecc9391359a4)
#05 pc 0002091f /system/lib/chipset-pub-sdk/libunwinder.z.so(OHOS::HiviewDFX::Unwinder::Impl::UpdateRegsState(OHOS::HiviewDFX::Unwinder::Impl::StepFrame&, void*, bool&, std::__h::shared_ptrOHOS::HiviewDFX::RegLocState&)+114)(9be4933031e5ae08ce0aecc9391359a4)
#06 pc 0001ff61 /system/lib/chipset-pub-sdk/libunwinder.z.so(OHOS::HiviewDFX::Unwinder::Impl::StepInner(bool, OHOS::HiviewDFX::Unwinder::Impl::StepFrame&, void*)+316)(9be4933031e5ae08ce0aecc9391359a4)
#07 pc 0001fddd /system/lib/chipset-pub-sdk/libunwinder.z.so(OHOS::HiviewDFX::Unwinder::Impl::UnwindFrame(void*, OHOS::HiviewDFX::Unwinder::Impl::StepFrame&, bool&)+296)(9be4933031e5ae08ce0aecc9391359a4)
#08 pc 0001eac5 /system/lib/chipset-pub-sdk/libunwinder.z.so(OHOS::HiviewDFX::Unwinder::Impl::Unwind(void*, unsigned int, unsigned int)+280)(9be4933031e5ae08ce0aecc9391359a4)
#09 pc 0001e2c9 /system/lib/chipset-pub-sdk/libunwinder.z.so(OHOS::HiviewDFX::Unwinder::Impl::UnwindLocalByOtherTid(int, bool, unsigned int, unsigned int)+516)(9be4933031e5ae08ce0aecc9391359a4)
#10 pc 00005413 /system/lib/chipset-pub-sdk/libbacktrace_local.so(OHOS::HiviewDFX::BacktraceLocalThread::UnwindOtherThreadMix(bool, unsigned int, unsigned int)+98)(7e856345c4c2d3a915f132892e805863)
#11 pc 000049fb /system/lib/chipset-pub-sdk/libbacktrace_local.so(OHOS::HiviewDFX::GetBacktraceStringByTidWithMix(std::__h::basic_string<char, std::__h::char_traits, std::__h::allocator>&, int, unsigned int, bool, unsigned int, bool)+394)(7e856345c4c2d3a915f132892e805863)
#12 pc 000bbedd /system/lib/platformsdk/libappkit_native.z.so(OHOS::AppExecFwk::AppfreezeInner::ChangeFaultDateInfo(OHOS::AppExecFwk::FaultData&, std::__h::basic_string<char, std::__h::char_traits, std::__h::allocator> const&)+240)(02abed9a2b21e27f44c8302210cfee35)
#13 pc 000bcfe5 /system/lib/platformsdk/libappkit_native.z.so(OHOS::AppExecFwk::AppfreezeInner::AcquireStack(OHOS::AppExecFwk::FaultData const&, bool)+988)(02abed9a2b21e27f44c8302210cfee35)
#14 pc 000bdba7 /system/lib/platformsdk/libappkit_native.z.so(02abed9a2b21e27f44c8302210cfee35)
#15 pc 00081f77 /system/lib/ndk/libffrt.so(ffrt::CPUEUTask::Execute()+122)(69b8dff4279a7da04d639dd10dd275fa)
#16 pc 0005230d /system/lib/ndk/libffrt.so(CoStartEntry(void*)+24)(69b8dff4279a7da04d639dd10dd275fa)
Registers:
r0:af66d0d0 r1:4124c854 r2:bedb37a8 r3:bedc37a8
r4:7baffa34 r5:fffffffc r6:00000000 r7:00000000
r8:00000001 r9:b0edb92c r10:00000004
fp:7baffa34 ip:b6607364 sp:7baff9f8 lr:b6597bd9 pc:b659ccb8
Other thread info:
Tid:13353, Name:.ohos.updateapp
#00 pc 000e166c /system/lib/ld-musl-arm.so.1(printf_core+1660)(ba11e7781854690c7fc7a4f5ba9cad29)
#01 pc 000e0eb4 /system/lib/ld-musl-arm.so.1(vfprintf+228)(ba11e7781854690c7fc7a4f5ba9cad29)
#02 pc 000e0054 /system/lib/ld-musl-arm.so.1(snprintf+160)(ba11e7781854690c7fc7a4f5ba9cad29)
#03 pc 000fe7e0 /system/lib/ld-musl-arm.so.1(__strftime_fmt_1+1648)(ba11e7781854690c7fc7a4f5ba9cad29)
#04 pc 000fec28 /system/lib/ld-musl-arm.so.1(__strftime_l+392)(ba11e7781854690c7fc7a4f5ba9cad29)
#05 pc 000fee0c /system/lib/ld-musl-arm.so.1(strftime+24)(ba11e7781854690c7fc7a4f5ba9cad29)
#06 pc 00003ed5 /system/lib/platformsdk/libfreeze_util.z.so(OHOS::AbilityRuntime::TimeUtil::DefaultCurrentTimeStr()+120)(1b7c3d6f37191a008693bfc7b96f25bb)
#07 pc 00003d61 /system/lib/platformsdk/libfreeze_util.z.so(OHOS::AbilityRuntime::FreezeUtil::AddLifecycleEvent(OHOS::sptrOHOS::IRemoteObject, std::__h::basic_string<char, std::__h::char_traits, std::__h::allocator> const&)+172)(1b7c3d6f37191a008693bfc7b96f25bb)
#08 pc 0003010f /system/lib/platformsdk/libuiabilitykit_native.z.so(OHOS::AbilityRuntime::JsUIAbility::AddLifecycleEventBeforeJSCall(OHOS::AbilityRuntime::FreezeUtil::TimeoutState, std::__h::basic_string<char, std::__h::char_traits, std::__h::allocator> const&) const+194)(9a39a9ec06332d14fbc403d4cb11fbac)
#09 pc 00032967 /system/lib/platformsdk/libuiabilitykit_native.z.so(OHOS::AbilityRuntime::JsUIAbility::CallOnForegroundFunc(OHOS::AAFwk::Want const&)+186)(9a39a9ec06332d14fbc403d4cb11fbac)
#10 pc 0003282f /system/lib/platformsdk/libuiabilitykit_native.z.so(OHOS::AbilityRuntime::JsUIAbility::OnForeground(OHOS::AAFwk::Want const&)+250)(9a39a9ec06332d14fbc403d4cb11fbac)
#11 pc 0005cd17 /system/lib/platformsdk/libuiabilitykit_native.z.so(OHOS::AbilityRuntime::UIAbilityImpl::Foreground(OHOS::AAFwk::Want const&)+190)(9a39a9ec06332d14fbc403d4cb11fbac)
#12 pc 0005ae83 /system/lib/platformsdk/libuiabilitykit_native.z.so(OHOS::AbilityRuntime::UIAbilityImpl::AbilityTransaction(OHOS::AAFwk::Want const&, OHOS::AAFwk::LifeCycleStateInfo const&)+434)(9a39a9ec06332d14fbc403d4cb11fbac)
#13 pc 0005a92b /system/lib/platformsdk/libuiabilitykit_native.z.so(OHOS::AbilityRuntime::UIAbilityImpl::HandleAbilityTransaction(OHOS::AAFwk::Want const&, OHOS::AAFwk::LifeCycleStateInfo const&, OHOS::sptrOHOS::AAFwk::SessionInfo)+778)(9a39a9ec06332d14fbc403d4cb11fbac)
#14 pc 00031ad5 /system/lib/platformsdk/libability_thread.z.so(OHOS::AbilityRuntime::UIAbilityThread::HandleAbilityTransaction(OHOS::AAFwk::Want const&, OHOS::AAFwk::LifeCycleStateInfo const&, OHOS::sptrOHOS::AAFwk::SessionInfo)+388)(06debe660039c18f1d55709b6c8be58d)
#15 pc 0003552f /system/lib/platformsdk/libability_thread.z.so(06debe660039c18f1d55709b6c8be58d)
#16 pc 000155f7 /system/lib/chipset-pub-sdk/libeventhandler.z.so(OHOS::AppExecFwk::EventHandler::DistributeEvent(std::_h::unique_ptr<OHOS::AppExecFwk::InnerEvent, void ()(OHOS::AppExecFwk::InnerEvent)> const&)+1090)(7dc3db72ae45aba9edcd077dac6531a0)
#17 pc 00023eb1 /system/lib/chipset-pub-sdk/libeventhandler.z.so(OHOS::AppExecFwk::(anonymous namespace)::EventRunnerImpl::ExecuteEventHandler(std::h::unique_ptr<OHOS::AppExecFwk::InnerEvent, void ()(OHOS::AppExecFwk::InnerEvent)>&)+912)(7dc3db72ae45aba9edcd077dac6531a0)
#18 pc 000235eb /system/lib/chipset-pub-sdk/libeventhandler.z.so(OHOS::AppExecFwk::(anonymous namespace)::EventRunnerImpl::Run()+578)(7dc3db72ae45aba9edcd077dac6531a0)
#19 pc 000260f9 /system/lib/chipset-pub-sdk/libeventhandler.z.so(OHOS::AppExecFwk::EventRunner::Run()+280)(7dc3db72ae45aba9edcd077dac6531a0)
#20 pc 0006d1b5 /system/lib/platformsdk/libappkit_native.z.so(OHOS::AppExecFwk::MainThread::Start()+344)(02abed9a2b21e27f44c8302210cfee35)
#21 pc 000048cd /system/lib/appspawn/appspawn/libappspawn_ace.z.so(RunChildProcessor(AppSpawnContent*, AppSpawnClient*)+508)(d98384ed662f6ced6e4bc5937905290f)
#22 pc 0000a165 /system/bin/appspawn(AppSpawnChild+396)(944ee320607117e9dd8a8c14430a0d9b)
#23 pc 00011917 /system/bin/appspawn(ProcessSpawnReqMsg+1890)(944ee320607117e9dd8a8c14430a0d9b)
#24 pc 0000fec1 /system/bin/appspawn(OnReceiveRequest+484)(944ee320607117e9dd8a8c14430a0d9b)
#25 pc 0000fe83 /system/lib/chipset-pub-sdk/libbegetutil.z.so(HandleRecvMsg+166)(7402defcd0c984b367958b78bc017e07)
#26 pc 0000faf3 /system/lib/chipset-pub-sdk/libbegetutil.z.so(HandleStreamEvent+98)(7402defcd0c984b367958b78bc017e07)
#27 pc 0000dd0b /system/lib/chipset-pub-sdk/libbegetutil.z.so(ProcessEvent+46)(7402defcd0c984b367958b78bc017e07)
#28 pc 0000d9af /system/lib/chipset-pub-sdk/libbegetutil.z.so(RunLoop+274)(7402defcd0c984b367958b78bc017e07)
#29 pc 0000e53f /system/bin/appspawn(AppSpawnRun+194)(944ee320607117e9dd8a8c14430a0d9b)
#30 pc 0000c89f /system/bin/appspawn(main+658)(944ee320607117e9dd8a8c14430a0d9b)
#31 pc 0006fc38 /system/lib/ld-musl-arm.so.1(libc_start_main_stage2+72)(ba11e7781854690c7fc7a4f5ba9cad29)
#32 pc 00009f40 /system/bin/appspawn(_start_c+84)(944ee320607117e9dd8a8c14430a0d9b)
#33 pc 00009ee4 /system/bin/appspawn(944ee320607117e9dd8a8c14430a0d9b)
Tid:13752, Name:OS_IPC_0_13752
#00 pc 000f108c /system/lib/ld-musl-arm.so.1(__timedwait_cp+176)(ba11e7781854690c7fc7a4f5ba9cad29)
#01 pc 000f73d4 /system/lib/ld-musl-arm.so.1(__pthread_mutex_timedlock_inner+692)(ba11e7781854690c7fc7a4f5ba9cad29)
#02 pc 001155e8 /system/lib/ld-musl-arm.so.1(DFX_SigchainHandler+288)(ba11e7781854690c7fc7a4f5ba9cad29)
#03 pc 001046b0 /system/lib/ld-musl-arm.so.1(signal_chain_handler+836)(ba11e7781854690c7fc7a4f5ba9cad29)
#04 pc 0006fde0 /system/lib/ld-musl-arm.so.1(ba11e7781854690c7fc7a4f5ba9cad29)
Tid:13753, Name:OS_DfxWatchdog
#00 pc 000f108c /system/lib/ld-musl-arm.so.1(__timedwait_cp+176)(ba11e7781854690c7fc7a4f5ba9cad29)
#01 pc 000f73d4 /system/lib/ld-musl-arm.so.1(__pthread_mutex_timedlock_inner+692)(ba11e7781854690c7fc7a4f5ba9cad29)
#02 pc 000a0454 /system/lib/libc++.so(std::__h::mutex::lock()+8)(9e8a51ad62938ec50e942eb8ed8eb31120a22f36)
** 分析判断 :**
线程池的线程在释放后,被appfreeze检测到超时,当被appfreeze访问线程的内存地址为空后产生本 次错误。
线程池与appfreeze在对资源的释放及访问没有同步状态,导致处理异常。
可以通过优化appfreeze中AcquireStack函数对异常的处理来避免update进程crash
diff --git a/frameworks/native/appkit/dfr/appfreeze_inner.cpp b/frameworks/native/appkit/dfr/appfreeze_inner.cpp
index 3ec14e9f62..03c9a06dbc 100644
--- a/frameworks/native/appkit/dfr/appfreeze_inner.cpp
+++ b/frameworks/native/appkit/dfr/appfreeze_inner.cpp
@@ -15,7 +15,7 @@
#include "appfreeze_inner.h"
#include <sys/time.h>
-
+#include <pthread.h>
#include "ability_manager_client.h"
#include "ability_state.h"
#include "appfreeze_manager.h"
@@ -111,11 +111,27 @@ void AppfreezeInner::ChangeFaultDateInfo(FaultData& faultData, const std::string
faultData.forceExit = false;
int32_t pid = IPCSkeleton::GetCallingPid();
faultData.errorObject.stack = "\nDump tid stack start time: " +
- AbilityRuntime::TimeUtil::DefaultCurrentTimeStr() + "\n";
+ AbilityRuntime::TimeUtil::DefaultCurrentTimeStr() + "\n";
std::string stack = "";
- if (!HiviewDFX::GetBacktraceStringByTidWithMix(stack, pid, 0, true)) {
- stack = "Failed to dump stacktrace for " + std::to_string(pid) + "\n" + stack;
+
+ bool isThreadAlive = false;
+ if ( pid > 0) {
+ std::string path = "/proc/" + std::to_string(pid) + "/status";
+ if(access(path.c_str(), F_OK) == 0)
+ {
+ isThreadAlive = true;
+ }
+ //isThreadAlive = (pthread_kill(pid, 0) == 0);
+ }
+
+ if (isThreadAlive) {
+ if (!HiviewDFX::GetBacktraceStringByTidWithMix(stack, pid, 0, true)) {
+ stack = "Failed to dump stacktrace for " + std::to_string(pid) + "\n" + stack;
+ }
+ } else {
+ stack = "Thread " + std::to_string(pid) + " is invalid or has exited, skip stack dump\n";
}
+
faultData.errorObject.stack += stack + "\nDump tid stack end time: " +
AbilityRuntime::TimeUtil::DefaultCurrentTimeStr() + "\n";
bool isExit = IsExitApp(faultData.errorObject.name);
@@ -300,4 +316,4 @@ std::string MainHandlerDumper::GetDumpInfo()
return dumpInfo;
}
} // namespace AAFwk
-} // namespace OHOS
\ No newline at end of file
+} // namespace OHOS
更多推荐


所有评论(0)