summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2021-07-07 17:17:04 -0600
committerJeff Sharkey <jsharkey@android.com>2021-07-07 17:17:07 -0600
commit79b834d47cdc113bc0652acb822df0d63298db3f (patch)
tree6c696f1365149a6ec7638b1ca7b6cc70c465c593 /core/java
parent5f5e03d3efcc98e51aa20848535a4032b8076003 (diff)
Tag some "new Binder()" instances to detect leaks.
We've seen evidence of a Binder leak, and our hunch is that it's caused by one of these anonymous "new Binder()" sites. Adding descriptors will help us identify the leak cause. Bug: 192415943 Test: atest BluetoothInstrumentationTests Change-Id: I30cd15f084cf50f67edd833b27b853c4b22e1db1
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/bluetooth/BluetoothAdapter.java3
-rw-r--r--core/java/android/content/AttributionSource.java8
2 files changed, 7 insertions, 4 deletions
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java
index 421b4de9d626..f5ab2ab7448a 100644
--- a/core/java/android/bluetooth/BluetoothAdapter.java
+++ b/core/java/android/bluetooth/BluetoothAdapter.java
@@ -120,6 +120,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
*/
public final class BluetoothAdapter {
private static final String TAG = "BluetoothAdapter";
+ private static final String DESCRIPTOR = "android.bluetooth.BluetoothAdapter";
private static final boolean DBG = true;
private static final boolean VDBG = false;
@@ -805,7 +806,7 @@ public final class BluetoothAdapter {
mManagerService = Objects.requireNonNull(managerService);
mAttributionSource = Objects.requireNonNull(attributionSource);
mLeScanClients = new HashMap<LeScanCallback, ScanCallback>();
- mToken = new Binder();
+ mToken = new Binder(DESCRIPTOR);
}
/**
diff --git a/core/java/android/content/AttributionSource.java b/core/java/android/content/AttributionSource.java
index 1dda6374a474..c499f691b69a 100644
--- a/core/java/android/content/AttributionSource.java
+++ b/core/java/android/content/AttributionSource.java
@@ -86,6 +86,8 @@ import java.util.Set;
*/
@Immutable
public final class AttributionSource implements Parcelable {
+ private static final String DESCRIPTOR = "android.content.AttributionSource";
+
private final @NonNull AttributionSourceState mAttributionSourceState;
private @Nullable AttributionSource mNextCached;
@@ -95,7 +97,7 @@ public final class AttributionSource implements Parcelable {
@TestApi
public AttributionSource(int uid, @Nullable String packageName,
@Nullable String attributionTag) {
- this(uid, packageName, attributionTag, new Binder());
+ this(uid, packageName, attributionTag, new Binder(DESCRIPTOR));
}
/** @hide */
@@ -130,7 +132,7 @@ public final class AttributionSource implements Parcelable {
AttributionSource(int uid, @Nullable String packageName, @Nullable String attributionTag,
@Nullable String[] renouncedPermissions, @Nullable AttributionSource next) {
- this(uid, packageName, attributionTag, new Binder(), renouncedPermissions, next);
+ this(uid, packageName, attributionTag, new Binder(DESCRIPTOR), renouncedPermissions, next);
}
AttributionSource(int uid, @Nullable String packageName, @Nullable String attributionTag,
@@ -541,7 +543,7 @@ public final class AttributionSource implements Parcelable {
if ((mBuilderFieldsSet & 0x10) == 0) {
mAttributionSourceState.next = null;
}
- mAttributionSourceState.token = new Binder();
+ mAttributionSourceState.token = new Binder(DESCRIPTOR);
if (mAttributionSourceState.next == null) {
// The NDK aidl backend doesn't support null parcelable arrays.
mAttributionSourceState.next = new AttributionSourceState[0];