From 301a05bc2f012dfcc196fda9497943fefe3be5b0 Mon Sep 17 00:00:00 2001 From: zhou_xq Date: Tue, 9 Sep 2025 16:45:51 +0800 Subject: [PATCH] Fix the issue of the failed test case DumpCatcherInterfacesTest029. Signed-off-by: zhou_xq --- interfaces/innerkits/backtrace/backtrace_local.cpp | 10 ++++++++-- .../innerkits/backtrace/backtrace_local_thread.cpp | 2 +- test/systemtest/faultloggerd_system_test.cpp | 4 ++-- test/unittest/faultloggerd/faultlogger_server_test.cpp | 1 - tools/crash_validator/crash_validator.cpp | 7 ++++++- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/interfaces/innerkits/backtrace/backtrace_local.cpp b/interfaces/innerkits/backtrace/backtrace_local.cpp index b7cb5a700..b803011a2 100644 --- a/interfaces/innerkits/backtrace/backtrace_local.cpp +++ b/interfaces/innerkits/backtrace/backtrace_local.cpp @@ -49,7 +49,10 @@ bool GetBacktraceFramesByTid(std::vector& frames, int32_t tid, size_t #endif Unwinder unwinder(isNeedMaps); BacktraceLocalThread thread(tid); - bool ret = thread.Unwind(unwinder, fast, maxFrameNums, skipFrameNum + 1); + if (tid == BACKTRACE_CURRENT_THREAD) { + skipFrameNum++; + } + bool ret = thread.Unwind(unwinder, fast, maxFrameNums, skipFrameNum); frames = thread.GetFrames(); return ret; } @@ -59,7 +62,10 @@ bool GetBacktraceStringByTid(std::string& out, int32_t tid, size_t skipFrameNum, size_t maxFrameNums, bool enableKernelStack) { std::vector frames; - bool ret = GetBacktraceFramesByTid(frames, tid, skipFrameNum + 1, fast, maxFrameNums); + if (tid == BACKTRACE_CURRENT_THREAD) { + skipFrameNum++; + } + bool ret = GetBacktraceFramesByTid(frames, tid, skipFrameNum, fast, maxFrameNums); if (!ret && enableKernelStack) { std::string msg = ""; DfxThreadStack threadStack; diff --git a/interfaces/innerkits/backtrace/backtrace_local_thread.cpp b/interfaces/innerkits/backtrace/backtrace_local_thread.cpp index eabc96fea..fd138df02 100644 --- a/interfaces/innerkits/backtrace/backtrace_local_thread.cpp +++ b/interfaces/innerkits/backtrace/backtrace_local_thread.cpp @@ -64,7 +64,7 @@ bool BacktraceLocalThread::Unwind(Unwinder& unwinder, bool fast, size_t maxFrame return ret; } - ret = unwinder.UnwindLocalWithTid(tid_, maxFrameNum, skipFrameNum + 1); + ret = unwinder.UnwindLocalWithTid(tid_, maxFrameNum, skipFrameNum); #ifdef __aarch64__ Unwinder::GetLocalFramesByPcs(frames_, unwinder.GetPcs()); #else diff --git a/test/systemtest/faultloggerd_system_test.cpp b/test/systemtest/faultloggerd_system_test.cpp index eac82ee9f..d2c3b7008 100644 --- a/test/systemtest/faultloggerd_system_test.cpp +++ b/test/systemtest/faultloggerd_system_test.cpp @@ -1759,12 +1759,12 @@ HWTEST_F(FaultLoggerdSystemTest, FaultLoggerdSystemTest127, TestSize.Level2) } } else { usleep(sleepTime); - kill(pid, SIGKILL); + kill(pid, SIGSEGV); int status = 0; waitpid(pid, &status, 0); ASSERT_TRUE(WIFSIGNALED(status)); int signal = WTERMSIG(status); - ASSERT_EQ(signal, SIGKILL); + ASSERT_EQ(signal, SIGSEGV); sleepTime = sleepTime + deviation; } } diff --git a/test/unittest/faultloggerd/faultlogger_server_test.cpp b/test/unittest/faultloggerd/faultlogger_server_test.cpp index 436e18978..f2d6a14b2 100644 --- a/test/unittest/faultloggerd/faultlogger_server_test.cpp +++ b/test/unittest/faultloggerd/faultlogger_server_test.cpp @@ -44,7 +44,6 @@ namespace HiviewDFX { namespace { constexpr int32_t SOCKET_TIMEOUT = 1; constexpr int32_t FD_PAIR_NUM = 2; -constexpr const char* const FAULTLOGGERD_SERVER_TEST_TAG = "FAULTLOGGERD_SERVER_TEST"; void FillRequestHeadData(RequestDataHead& head, int8_t clientType) { head.clientType = clientType; diff --git a/tools/crash_validator/crash_validator.cpp b/tools/crash_validator/crash_validator.cpp index 30125a9fa..25cac3ff9 100644 --- a/tools/crash_validator/crash_validator.cpp +++ b/tools/crash_validator/crash_validator.cpp @@ -250,7 +250,12 @@ void CrashValidator::CheckOutOfDateEvents() { std::vector::iterator it = pendingEvents_.begin(); while (it != pendingEvents_.end()) { - uint64_t now = time(nullptr); + int64_t nowTime = time(nullptr); + if (nowTime < 0) { + printf("Failed to get the time.\n"); + return; + } + uint64_t now = static_cast(nowTime); uint64_t eventTime = it->time; if (eventTime > now) { eventTime = eventTime / 1000; // 1000 : convert to second -- Gitee