From 0642256d5e4f0d832bf9e29328119cf725e63f19 Mon Sep 17 00:00:00 2001 From: wonghiu45 Date: Mon, 31 Jul 2023 14:36:31 +0800 Subject: [PATCH] add try times limits for BeginRead category: bugfix issue: https://gitee.com/openharmony/commonlibrary_memory_utils/issues/I7PA7M Signed-off-by: wonghiu45 Change-Id: Iaeb07a73bdc0cd00725e020a1c9b2ed2aeb76350 --- libpurgeablemem/cpp/src/purgeable_mem_base.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libpurgeablemem/cpp/src/purgeable_mem_base.cpp b/libpurgeablemem/cpp/src/purgeable_mem_base.cpp index 86b0bf2..c261bb3 100644 --- a/libpurgeablemem/cpp/src/purgeable_mem_base.cpp +++ b/libpurgeablemem/cpp/src/purgeable_mem_base.cpp @@ -29,6 +29,7 @@ namespace PurgeableMem { #undef LOG_TAG #endif #define LOG_TAG "PurgeableMem" +const int MAX_BUILD_TRYTIMES = 3; static inline size_t RoundUp(size_t val, size_t align) { @@ -50,6 +51,7 @@ bool PurgeableMemBase::BeginRead() { bool succ = false; bool ret = false; + int tryTimes = 0; PM_HILOG_DEBUG(LOG_CORE, "%{public}s %{public}s", __func__, ToString().c_str()); IF_NULL_LOG_ACTION(dataPtr_, "dataPtr is nullptr in BeginRead", return false); @@ -84,15 +86,17 @@ bool PurgeableMemBase::BeginRead() } PM_HILOG_DEBUG(LOG_CORE, "%{public}s: purged, built %{public}s", __func__, succ ? "succ" : "fail"); } + tryTimes++; rwlock_.unlock(); - if (!succ) { + if (!succ || tryTimes > MAX_BUILD_TRYTIMES) { err = PMB_BUILD_ALL_FAIL; break; } } if (!ret) { - PM_HILOG_ERROR(LOG_CORE, "%{public}s: err %{public}s, UxptePut.", __func__, GetPMStateName(err)); + PM_HILOG_ERROR(LOG_CORE, "%{public}s: err %{public}s, UxptePut. tryTime:%{public}d", + __func__, GetPMStateName(err), tryTimes); Unpin(); } return ret; -- Gitee