From f3b6d56102c08ee4659082b8faa2cd637b64fb4f Mon Sep 17 00:00:00 2001 From: jsj Date: Wed, 2 Mar 2022 12:09:42 +0000 Subject: [PATCH] IssueNo:#I4W1B7 Description: Fix crash caused by SetANRMissionByProcessID Sig:SIG_ApplicationFramework Feature or Bugfix:Bugfix Binary Source:No Signed-off-by: jsj Change-Id: Id11a89bfea73b9c1e9a8a5f15480bac461321ce8 --- .../src/ability_manager_service.cpp | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index f1e7837125..93c3639c85 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -4422,20 +4422,30 @@ bool AbilityManagerService::VerifyUriPermisson(const AbilityRequest &abilityRequ bool AbilityManagerService::SetANRMissionByProcessID(int pid) { + HILOG_INFO("start."); + if (appScheduler_ == nullptr || currentMissionListManager_ == nullptr) { + HILOG_ERROR("null point."); + return false; + } std::vector> tokens; if (appScheduler_->GetAbilityRecordsByProcessID(pid, tokens) != ERR_OK) { HILOG_ERROR("Get ability record failed."); return false; } - if (appScheduler_) { - for (auto &item : tokens) { - auto abilityRecord = currentMissionListManager_->GetAbilityRecordByToken(item); - auto mission = abilityRecord->GetMission(); - mission->SetANRState(); + for (auto &item : tokens) { + auto abilityRecord = currentMissionListManager_->GetAbilityRecordByToken(item); + if (abilityRecord == nullptr) { + HILOG_WARN("abilityRecord is nullptr."); + continue; } - return true; + auto mission = abilityRecord->GetMission(); + if (mission == nullptr) { + HILOG_WARN("mission is nullptr."); + continue; + } + mission->SetANRState(); } - return false; + return true; } void AbilityManagerService::StartupResidentProcess(int userId)