Loading cmds/dumpstate/dumpstate.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -2199,6 +2199,16 @@ Dumpstate::RunStatus Dumpstate::DumpTraces(const char** path) { continue; } // Skip cached processes. if (IsCached(pid)) { // For consistency, the header and footer to this message match those // dumped by debuggerd in the success case. dprintf(fd, "\n---- pid %d at [unknown] ----\n", pid); dprintf(fd, "Dump skipped for cached process.\n"); dprintf(fd, "---- end %d ----", pid); continue; } const std::string link_name = android::base::StringPrintf("/proc/%d/exe", pid); std::string exe; if (!android::base::Readlink(link_name, &exe)) { Loading libs/dumputils/dump_utils.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #include <set> #include <android-base/file.h> #include <android-base/parseint.h> #include <android-base/properties.h> #include <android-base/stringprintf.h> #include <android-base/strings.h> Loading Loading @@ -210,3 +211,18 @@ bool IsZygote(int pid) { return cmdline == "zygote" || cmdline == "zygote64" || cmdline == "usap32" || cmdline == "usap64" || cmdline == "webview_zygote"; } bool IsCached(int pid) { std::string oom_score_adj; if (!android::base::ReadFileToString(android::base::StringPrintf("/proc/%d/oom_score_adj", pid), &oom_score_adj)) { return false; } int32_t oom_score_adj_value; if (!android::base::ParseInt(android::base::Trim(oom_score_adj), &oom_score_adj_value)) { return false; } // An OOM score greater than 900 indicates a cached process. return oom_score_adj_value >= 900; } libs/dumputils/include/dumputils/dump_utils.h +2 −0 Original line number Diff line number Diff line Loading @@ -25,4 +25,6 @@ std::set<int> get_interesting_pids(); bool IsZygote(int pid); bool IsCached(int pid); #endif // DUMPUTILS_H_ Loading
cmds/dumpstate/dumpstate.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -2199,6 +2199,16 @@ Dumpstate::RunStatus Dumpstate::DumpTraces(const char** path) { continue; } // Skip cached processes. if (IsCached(pid)) { // For consistency, the header and footer to this message match those // dumped by debuggerd in the success case. dprintf(fd, "\n---- pid %d at [unknown] ----\n", pid); dprintf(fd, "Dump skipped for cached process.\n"); dprintf(fd, "---- end %d ----", pid); continue; } const std::string link_name = android::base::StringPrintf("/proc/%d/exe", pid); std::string exe; if (!android::base::Readlink(link_name, &exe)) { Loading
libs/dumputils/dump_utils.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #include <set> #include <android-base/file.h> #include <android-base/parseint.h> #include <android-base/properties.h> #include <android-base/stringprintf.h> #include <android-base/strings.h> Loading Loading @@ -210,3 +211,18 @@ bool IsZygote(int pid) { return cmdline == "zygote" || cmdline == "zygote64" || cmdline == "usap32" || cmdline == "usap64" || cmdline == "webview_zygote"; } bool IsCached(int pid) { std::string oom_score_adj; if (!android::base::ReadFileToString(android::base::StringPrintf("/proc/%d/oom_score_adj", pid), &oom_score_adj)) { return false; } int32_t oom_score_adj_value; if (!android::base::ParseInt(android::base::Trim(oom_score_adj), &oom_score_adj_value)) { return false; } // An OOM score greater than 900 indicates a cached process. return oom_score_adj_value >= 900; }
libs/dumputils/include/dumputils/dump_utils.h +2 −0 Original line number Diff line number Diff line Loading @@ -25,4 +25,6 @@ std::set<int> get_interesting_pids(); bool IsZygote(int pid); bool IsCached(int pid); #endif // DUMPUTILS_H_