[automerger skipped] DO NOT MERGE - Merge PPRL.190305.001 into master am: bf44d5a44c -s ours am: 3548d8d5ec -s ours
am: dd589d07e0 -s ours
am skip reason: subject contains skip directive

Change-Id: Ic0968c9ae8ced710ee25946855b6be88e6eecb2d
diff --git a/service.cpp b/service.cpp
index c7c2a95..9dd1aee 100644
--- a/service.cpp
+++ b/service.cpp
@@ -50,6 +50,8 @@
 // libhidl
 using android::hardware::handleTransportPoll;
 using android::hardware::setRequestingSid;
+using android::hardware::HidlReturnRestriction;
+using android::hardware::setProcessHidlReturnRestriction;
 using android::hardware::setupTransportPolling;
 using android::hardware::toBinder;
 
@@ -137,15 +139,19 @@
 };
 
 int main() {
+    // If hwservicemanager crashes, the system may be unstable and hard to debug. This is both why
+    // we log this and why we care about this at all.
+    setProcessHidlReturnRestriction(HidlReturnRestriction::ERROR_IF_UNCHECKED);
+
     sp<ServiceManager> manager = new ServiceManager();
     setRequestingSid(manager, true);
 
-    if (!manager->add(serviceName, manager)) {
+    if (!manager->add(serviceName, manager).withDefault(false)) {
         ALOGE("Failed to register hwservicemanager with itself.");
     }
 
     sp<TokenManager> tokenManager = new TokenManager();
-    if (!manager->add(serviceName, tokenManager)) {
+    if (!manager->add(serviceName, tokenManager).withDefault(false)) {
         ALOGE("Failed to register ITokenManager with hwservicemanager.");
     }