linkToDeath exception cause system server crash
java.util.NoSuchElementException: Death link does not exist when linkToDeath has remote exception, unlinkToDeath will fail and throw NoSuchElementException, catch it in AbstractAccessibilityServiceConnection to avoid system server crash. Bug: 157580692 Test: manual Change-Id: I42ce3a458e04539d76555679279d1368e0c61ae0
This commit is contained in:
committed by
Agatha Man
parent
b52353b790
commit
0c1b921923
25
diff
Normal file
25
diff
Normal file
@@ -0,0 +1,25 @@
|
||||
diff --git a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java
|
||||
index fc43882..832dc91 100644
|
||||
--- a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java
|
||||
+++ b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java
|
||||
@@ -67,6 +67,7 @@ import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
+import java.util.NoSuchElementException;
|
||||
|
||||
/**
|
||||
* This class represents an accessibility client - either an AccessibilityService or a UiAutomation.
|
||||
@@ -978,7 +979,11 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ
|
||||
/* ignore */
|
||||
}
|
||||
if (mService != null) {
|
||||
- mService.unlinkToDeath(this, 0);
|
||||
+ try {
|
||||
+ mService.unlinkToDeath(this, 0);
|
||||
+ }catch(NoSuchElementException e) {
|
||||
+ Slog.e(LOG_TAG, "Failed unregistering death link");
|
||||
+ }
|
||||
mService = null;
|
||||
}
|
||||
|
||||
@@ -90,6 +90,7 @@ import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
@@ -1179,7 +1180,11 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ
|
||||
/* ignore */
|
||||
}
|
||||
if (mService != null) {
|
||||
mService.unlinkToDeath(this, 0);
|
||||
try {
|
||||
mService.unlinkToDeath(this, 0);
|
||||
} catch (NoSuchElementException e) {
|
||||
Slog.e(LOG_TAG, "Failed unregistering death link");
|
||||
}
|
||||
mService = null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user