From b270fc22019e67b796ce6859916ed9977ca976b0 Mon Sep 17 00:00:00 2001 From: Fyodor Kupolov Date: Mon, 2 Jul 2018 16:12:58 -0700 Subject: [PATCH] Use sharedUserId as package name if there are collisions Per-UID Summary (cpu_time, % of total cpu_time, call_count, exception_count, package/uid): 13095032 43% 44663 0 shared:com.package.shareduid/u0a35 8872156 29% 5831 0 com.package2/u0a75 2379684 8% 1549 0 com.package3/u0a23 Test: manual dumpsys binder_calls_stats Test: BinderCallsStatsTest + BinderCallsStatsPerfTest Bug: 75318418 Change-Id: I9b122252d8f8d3d2297bc71d46d5944c4402fd5e --- .../java/com/android/server/BinderCallsStatsService.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/BinderCallsStatsService.java b/services/core/java/com/android/server/BinderCallsStatsService.java index ce1be6f63e2bc..490fcc1eb253e 100644 --- a/services/core/java/com/android/server/BinderCallsStatsService.java +++ b/services/core/java/com/android/server/BinderCallsStatsService.java @@ -106,7 +106,13 @@ public class BinderCallsStatsService extends Binder { } Map map = new HashMap<>(); for (PackageInfo pkg : packages) { - map.put(pkg.applicationInfo.uid, pkg.packageName); + String name = pkg.packageName; + int uid = pkg.applicationInfo.uid; + // Use sharedUserId string as package name if there are collisions + if (pkg.sharedUserId != null && map.containsKey(uid)) { + name = "shared:" + pkg.sharedUserId; + } + map.put(uid, name); } return map; }