Harder failures for lazy service clients.

Detect when servicemanager state is inconsistent at runtime.

Bug: 140310064
Change-Id: I59cd737f3e7b7d6e9649a6c77f2ef89fca5efd36
Test: aidl_lazy_test in TH
diff --git a/libs/binder/LazyServiceRegistrar.cpp b/libs/binder/LazyServiceRegistrar.cpp
index 74aece8..d4f26a1 100644
--- a/libs/binder/LazyServiceRegistrar.cpp
+++ b/libs/binder/LazyServiceRegistrar.cpp
@@ -114,6 +114,12 @@
         mNumConnectedServices--;
     }
 
+    // if this fails, we should switch this to keep track of clients inside
+    // of mRegisteredServices so that we know which service is double-counted.
+    LOG_ALWAYS_FATAL_IF(mNumConnectedServices > mRegisteredServices.size(),
+                        "Invalid state: %zu services have clients, but we only know about %zu",
+                        mNumConnectedServices, mRegisteredServices.size());
+
     ALOGI("Process has %zu (of %zu available) client(s) in use after notification %s has clients: %d",
           mNumConnectedServices, mRegisteredServices.size(),
           String8(service->getInterfaceDescriptor()).string(), clients);