Log for duplicate service registration. am: d90d9f2bc9 am: 2137299e95
am: 62729eea87

Change-Id: I60240ae17be65c5126412039442404ea71455964
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.");
     }