diff options
author | 2020-07-08 17:05:24 -0700 | |
---|---|---|
committer | 2020-07-09 15:11:28 -0700 | |
commit | 0c1b92192314a5eba892a6f63958acedcde8ce67 (patch) | |
tree | 077fe647d09a1279e62e73fe885050bae2aad5fa | |
parent | b52353b790b08147b6d63a9669790162b769166a (diff) |
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
-rw-r--r-- | diff | 25 | ||||
-rw-r--r-- | services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java | 7 |
2 files changed, 31 insertions, 1 deletions
@@ -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; + } + diff --git a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java index 6b852adce0f1..40a2816ee7de 100644 --- a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java +++ b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java @@ -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; } |