From f5bd092b5099cf43f031c3f53ad01592dda57f4b Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Mon, 22 Mar 2010 17:10:15 -0400 Subject: [PATCH] Improve wakelock debugging: Throw NullPointerException if tag is null in PowerManager.newWakelock() Print wakelock owner's uid and pid in dumpsys power output. BUG: 2522675 Change-Id: I462c7f8c49f9896b2f58cef5a678ebd2c062a8f7 Signed-off-by: Mike Lockwood --- core/java/android/os/PowerManager.java | 3 +++ services/java/com/android/server/PowerManagerService.java | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java index e4eaf45b447a2..f4ca8bc854693 100644 --- a/core/java/android/os/PowerManager.java +++ b/core/java/android/os/PowerManager.java @@ -361,6 +361,9 @@ public class PowerManager */ public WakeLock newWakeLock(int flags, String tag) { + if (tag == null) { + throw new NullPointerException("tag is null in PowerManager.newWakeLock"); + } return new WakeLock(flags, tag); } diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index d72416d8206be..848997b6acf73 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -571,6 +571,7 @@ class PowerManagerService extends IPowerManager.Stub binder = b; tag = t; uid = u == MY_UID ? Process.SYSTEM_UID : u; + pid = Binder.getCallingPid(); if (u != MY_UID || ( !"KEEP_SCREEN_ON_FLAG".equals(tag) && !"KeyInputQueue".equals(tag))) { @@ -595,6 +596,7 @@ class PowerManagerService extends IPowerManager.Stub final IBinder binder; final String tag; final int uid; + final int pid; final int monitorType; boolean activated = true; int minState; @@ -998,7 +1000,8 @@ class PowerManagerService extends IPowerManager.Stub activated = " activated"; } pw.println(" " + type + " '" + wl.tag + "'" + acquireCausesWakeup - + activated + " (minState=" + wl.minState + ")"); + + activated + " (minState=" + wl.minState + ", uid=" + wl.uid + + ", pid=" + wl.pid + ")"); } pw.println();