diff --git a/frameworks/localhandler/dfx_signal_local_handler.cpp b/frameworks/localhandler/dfx_signal_local_handler.cpp index 36c3f4bdc5b79726deeec0540f813a3587bf59d0..cff33f0893c928b495dbc192ed6651df4b0672e1 100644 --- a/frameworks/localhandler/dfx_signal_local_handler.cpp +++ b/frameworks/localhandler/dfx_signal_local_handler.cpp @@ -55,7 +55,7 @@ static struct ProcessDumpRequest g_request; static pthread_mutex_t g_signalHandlerMutex = PTHREAD_MUTEX_INITIALIZER; static constexpr int CATCHER_STACK_SIGNALS[] = { - SIGABRT, SIGBUS, SIGILL, SIGSEGV, SIGALRM, + SIGABRT, SIGBUS, SIGILL, SIGSEGV, }; #if !defined(__aarch64__) && !defined(__loongarch_lp64) diff --git a/interfaces/innerkits/dump_catcher/dfx_dump_catcher.cpp b/interfaces/innerkits/dump_catcher/dfx_dump_catcher.cpp index ceaa3e70e55aeaee9d5e7c961380c90b44a6e10a..c3ccb077a3028ef7014af6be0acd76df3c308786 100644 --- a/interfaces/innerkits/dump_catcher/dfx_dump_catcher.cpp +++ b/interfaces/innerkits/dump_catcher/dfx_dump_catcher.cpp @@ -662,6 +662,10 @@ int32_t DfxDumpCatcher::Impl::DoDumpCatchRemote(int pid, int tid, std::string& m return DUMPCATCH_EPARAM; } + if (IsFrozen(pid, ret) && ret == DUMPCATCH_TIMEOUT_KERNEL_FROZEN) { + stack_ = stackKit_.GetProcessStackWithTimeout(pid, WAIT_GET_KERNEL_STACK_TIMEOUT); + return ret; + } if (DfxDumpCatcherSlowPolicy::GetInstance().IsDumpCatcherInSlowPeriod(pid)) { DFXLOGW("dumpcatch in slow period, return pid (%{public}d) kernel stack directly!", pid); msg.append("Result: pid(" + std::to_string(pid) + ") last dump slow, return kernel stack directly.\n");