Loading llkd/libllkd.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -737,7 +737,7 @@ bool llkCheckStack(proc* procp, const std::string& piddir) { auto kernel_stack = ReadFile(piddir + "/stack"); if (kernel_stack.empty()) { LOG(INFO) << piddir << "/stack empty comm=" << procp->getComm() LOG(VERBOSE) << piddir << "/stack empty comm=" << procp->getComm() << " cmdline=" << procp->getCmdline(); return false; } Loading @@ -745,11 +745,13 @@ bool llkCheckStack(proc* procp, const std::string& piddir) { if (kernel_stack.find(" cpu_worker_pools+0x") != std::string::npos) return false; char idx = -1; char match = -1; std::string matched_stack_symbol = "<unknown>"; for (const auto& stack : llkCheckStackSymbols) { if (++idx < 0) break; if ((kernel_stack.find(" "s + stack + "+0x") != std::string::npos) || (kernel_stack.find(" "s + stack + ".cfi+0x") != std::string::npos)) { match = idx; matched_stack_symbol = stack; break; } } Loading @@ -760,7 +762,9 @@ bool llkCheckStack(proc* procp, const std::string& piddir) { } if (match == char(-1)) return false; procp->count_stack += llkCycle; return procp->count_stack >= llkStateTimeoutMs[llkStateStack]; if (procp->count_stack < llkStateTimeoutMs[llkStateStack]) return false; LOG(WARNING) << "Found " << matched_stack_symbol << " in stack for pid " << procp->pid; return true; } #endif Loading Loading
llkd/libllkd.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -737,7 +737,7 @@ bool llkCheckStack(proc* procp, const std::string& piddir) { auto kernel_stack = ReadFile(piddir + "/stack"); if (kernel_stack.empty()) { LOG(INFO) << piddir << "/stack empty comm=" << procp->getComm() LOG(VERBOSE) << piddir << "/stack empty comm=" << procp->getComm() << " cmdline=" << procp->getCmdline(); return false; } Loading @@ -745,11 +745,13 @@ bool llkCheckStack(proc* procp, const std::string& piddir) { if (kernel_stack.find(" cpu_worker_pools+0x") != std::string::npos) return false; char idx = -1; char match = -1; std::string matched_stack_symbol = "<unknown>"; for (const auto& stack : llkCheckStackSymbols) { if (++idx < 0) break; if ((kernel_stack.find(" "s + stack + "+0x") != std::string::npos) || (kernel_stack.find(" "s + stack + ".cfi+0x") != std::string::npos)) { match = idx; matched_stack_symbol = stack; break; } } Loading @@ -760,7 +762,9 @@ bool llkCheckStack(proc* procp, const std::string& piddir) { } if (match == char(-1)) return false; procp->count_stack += llkCycle; return procp->count_stack >= llkStateTimeoutMs[llkStateStack]; if (procp->count_stack < llkStateTimeoutMs[llkStateStack]) return false; LOG(WARNING) << "Found " << matched_stack_symbol << " in stack for pid " << procp->pid; return true; } #endif Loading