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.");
}