diff --git a/interfaces/innerkits/backtrace/backtrace_local.cpp b/interfaces/innerkits/backtrace/backtrace_local.cpp index b7cb5a700668c6779ca2d9c0ffd823853756995a..b803011a2eeddd415347a346282892f9e4ed11fe 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 eabc96fea73d9815538c613b303d157815a3e30e..fd138df021aaa986c1bc6542e73556fc6886bdea 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 eac82ee9f5812443b6b6f501560ca05b122844d9..d2c3b7008628d83b28ca2011d09b26536f329f3b 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 436e189785af5e87bc12dc92b127c45f86364941..f2d6a14b2aca9eb0b578392ca26e21f43866e91a 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 30125a9fafeebd2f030fed65c2d93658cfd3798d..25cac3ff9924eae9505e733fa6d961943bf9d0e0 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