From 72a6d56d84beddbc71a483a77db3a8e5575b6ebc Mon Sep 17 00:00:00 2001 From: qinyige1 Date: Mon, 29 Nov 2021 14:28:19 +0800 Subject: [Stability][Bugfix] Catch DeadObjectException in TCMS. The disconnection of TextClassificationService may be unhandled when binder call comes, which causes RuntimeException. Since the disconnection will be handled later, we just catch the exception here. Bug: 210711405 Test: CtsTextClassifierService Change-Id: I1745f2b40c84115f745a7424c1d329cc1b357831 --- .../textclassifier/TextClassificationManagerService.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/textclassifier/TextClassificationManagerService.java b/services/core/java/com/android/server/textclassifier/TextClassificationManagerService.java index 0f37450c24c9..e7d05b623481 100644 --- a/services/core/java/com/android/server/textclassifier/TextClassificationManagerService.java +++ b/services/core/java/com/android/server/textclassifier/TextClassificationManagerService.java @@ -527,12 +527,13 @@ public final class TextClassificationManagerService extends ITextClassifierServi callback.onFailure(); return; } - textClassifierServiceConsumer.accept(serviceState.mService); + consumeServiceNoExceptLocked(textClassifierServiceConsumer, serviceState.mService); } else { serviceState.mPendingRequests.add( new PendingRequest( methodName, - () -> textClassifierServiceConsumer.accept(serviceState.mService), + () -> consumeServiceNoExceptLocked( + textClassifierServiceConsumer, serviceState.mService), callback::onFailure, callback.asBinder(), this, serviceState, @@ -541,6 +542,16 @@ public final class TextClassificationManagerService extends ITextClassifierServi } } + private static void consumeServiceNoExceptLocked( + @NonNull ThrowingConsumer textClassifierServiceConsumer, + @Nullable ITextClassifierService service) { + try { + textClassifierServiceConsumer.accept(service); + } catch (RuntimeException | Error e) { + Slog.e(LOG_TAG, "Exception when consume textClassifierService: " + e); + } + } + private static ITextClassifierCallback wrap(ITextClassifierCallback orig) { return new CallbackWrapper(orig); } -- cgit v1.2.3-59-g8ed1b