diff options
| author | 2019-11-01 02:26:09 -0700 | |
|---|---|---|
| committer | 2019-11-01 02:26:09 -0700 | |
| commit | 96884741721247a32513d1d76cdebb3a4c6ba9b0 (patch) | |
| tree | 86c3c6d2a992c1b576e6a44aa94d362dd6f2effd | |
| parent | 2e63cedc0e7831b252a6891bf62cf868234a1d72 (diff) | |
Downgrade error level when proc file is empty
Use Slog.w instead of Slog.wtf for a few empty cases when reading
proc files.
There have been quite a few issues around reporting error at Slog
.wtf level in the past. Although Slog.wtf should not crash itself,
it has indirectly caused a few crashes due to improper handling of
wtf errors e.g. arose from incorrectly mocking BatteryStatsImpl.
Test: Manual
Change-Id: Idce018c928a1bb0f3d4c139382d090be009c291d
| -rw-r--r-- | core/java/com/android/internal/os/KernelCpuUidTimeReader.java | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/core/java/com/android/internal/os/KernelCpuUidTimeReader.java b/core/java/com/android/internal/os/KernelCpuUidTimeReader.java index e6d044f4722b..f1eb2fb56331 100644 --- a/core/java/com/android/internal/os/KernelCpuUidTimeReader.java +++ b/core/java/com/android/internal/os/KernelCpuUidTimeReader.java @@ -403,7 +403,7 @@ public abstract class KernelCpuUidTimeReader<T> { } private long[] readFreqs(String line) { - if (line == null) { + if (line == null || line.trim().isEmpty()) { return null; } final String[] lineArray = line.split(" "); @@ -620,14 +620,18 @@ public abstract class KernelCpuUidTimeReader<T> { return true; } - String str = line.toString(); + String str = line.toString().trim(); + if (str.isEmpty()) { + Slog.w(mTag, "Empty uid_concurrent_active_time"); + return false; + } if (!str.startsWith("cpus:")) { - Slog.wtf(mTag, "Malformed uid_concurrent_active_time line: " + line); + Slog.wtf(mTag, "Malformed uid_concurrent_active_time line: " + str); return false; } int cores = Integer.parseInt(str.substring(5).trim(), 10); if (cores <= 0) { - Slog.wtf(mTag, "Malformed uid_concurrent_active_time line: " + line); + Slog.wtf(mTag, "Malformed uid_concurrent_active_time line: " + str); return false; } mCores = cores; @@ -750,17 +754,22 @@ public abstract class KernelCpuUidTimeReader<T> { if (mNumClusters > 0) { return true; } + String lineStr = line.toString().trim(); + if (lineStr.isEmpty()) { + Slog.w(mTag, "Empty uid_concurrent_policy_time"); + return false; + } // Parse # cores in clusters. - String[] lineArray = line.toString().split(" "); + String[] lineArray = lineStr.split(" "); if (lineArray.length % 2 != 0) { - Slog.wtf(mTag, "Malformed uid_concurrent_policy_time line: " + line); + Slog.wtf(mTag, "Malformed uid_concurrent_policy_time line: " + lineStr); return false; } int[] clusters = new int[lineArray.length / 2]; int cores = 0; for (int i = 0; i < clusters.length; i++) { if (!lineArray[i * 2].startsWith("policy")) { - Slog.wtf(mTag, "Malformed uid_concurrent_policy_time line: " + line); + Slog.wtf(mTag, "Malformed uid_concurrent_policy_time line: " + lineStr); return false; } clusters[i] = Integer.parseInt(lineArray[i * 2 + 1], 10); |