Fix getService should retry on DEAD_OBJECT

If getService sees DEAD_OBJECT or nullptr when calling
interfaceChain on the retrieved service, it should
retry. Otherwise (e.g. TRANSACTION_FAILED for selinux
denials), it should bail out.

This retry doesn't happen for tryGetService.

Test: calling Debug.getMemoryInfo from apps does not hang
Test: kill system_server, audio_server restarts exactly once
      (tested 10/10 times)
Test: taking screenshots / using camera / using maps
Test: adb push
$OUT/data/nativetest/VtsHalNfcV1_0TargetTest/VtsHalNfcV1_0TargetTest
/data/local/tmp && adb shell
/data/local/tmp/VtsHalNfcV1_0TargetTest
Test: hidl_test

Bug: 36153684
Bug: 36611652
Change-Id: Ibc0de0953dffea52acb366faf09f397176554502
diff --git a/generateCpp.cpp b/generateCpp.cpp
index 27d843c..35cdcae 100644
--- a/generateCpp.cpp
+++ b/generateCpp.cpp
@@ -245,7 +245,8 @@
                 // race condition. hwservicemanager drops the service
                 // from waitForHwService to here
                 out << "ALOGW(\"getService: found null hwbinder interface\");\n"
-                    << "break;\n";
+                    << (isTry ? "break" : "continue")
+                    << ";\n";
             }).endl();
             out << "::android::hardware::Return<::android::sp<" << interfaceName
                 << ">> castRet = " << interfaceName << "::castFrom(base, true /* emitError */);\n";
@@ -253,7 +254,8 @@
                 out.sIf("castRet.isDeadObject()", [&] {
                     // service is dead (castFrom cannot call interfaceChain)
                     out << "ALOGW(\"getService: found dead hwbinder service\");\n"
-                        << "break;\n";
+                        << (isTry ? "break" : "continue")
+                        << ";\n";
                 }).sElse([&] {
                     out << "ALOGW(\"getService: cannot call into hwbinder service: %s"
                         << "; No permission? Check for selinux denials.\", "