libbinder: RPC avoid server shutdown crash

Server thread needs to detach itself before removing its entry in
RpcSession. This was causing the (upcoming) RPC server fuzzer to fail
very frequently.

Bug: 182938024
Test: w/ fuzzer, binderRpcTest
Change-Id: I004747971997ed2ae90613757836eb6f68473abd
diff --git a/libs/binder/RpcSession.cpp b/libs/binder/RpcSession.cpp
index bf998c1..f4a3cff 100644
--- a/libs/binder/RpcSession.cpp
+++ b/libs/binder/RpcSession.cpp
@@ -143,8 +143,10 @@
         holdThis->join(unique_fd(fd));
         {
             std::lock_guard<std::mutex> _l(holdThis->mMutex);
-            size_t erased = mThreads.erase(std::this_thread::get_id());
-            LOG_ALWAYS_FATAL_IF(erased != 0, "Could not erase thread.");
+            auto it = mThreads.find(std::this_thread::get_id());
+            LOG_ALWAYS_FATAL_IF(it == mThreads.end());
+            it->second.detach();
+            mThreads.erase(it);
         }
     });
     mThreads[thread.get_id()] = std::move(thread);