OSDN Git Service

Stop bugreportd if binder call fails
authorNandana Dutt <nandana@google.com>
Fri, 22 Mar 2019 14:48:50 +0000 (14:48 +0000)
committerNandana Dutt <nandana@google.com>
Fri, 22 Mar 2019 14:57:40 +0000 (14:57 +0000)
Fixes: 128949427
Test: Tested by supplying a valid fd that dumpstate does not have access
to, but system server has access to. So the startBugreport call fails.
Verified that subsequent calls with proper arguments go through and not
encounter BUGREPORT_ERROR_ANOTHER_REPORT_IN_PROGRESS.

Change-Id: I393e09a4e35ae5191406112d76f27fe89418c069

services/core/java/com/android/server/os/BugreportManagerServiceImpl.java

index 5c0874d..c98a79a 100644 (file)
@@ -174,7 +174,11 @@ class BugreportManagerServiceImpl extends IDumpstate.Stub {
             ds.startBugreport(callingUid, callingPackage,
                     bugreportFd, screenshotFd, bugreportMode, myListener);
         } catch (RemoteException e) {
-            reportError(listener, IDumpstateListener.BUGREPORT_ERROR_RUNTIME_ERROR);
+            // bugreportd service is already started now. We need to kill it to manage the
+            // lifecycle correctly. If we don't subsequent callers will get
+            // BUGREPORT_ERROR_ANOTHER_REPORT_IN_PROGRESS error.
+            // Note that listener will be notified by the death recipient below.
+            cancelBugreport();
         }
     }