Hi Nicolas,
Thank you for your help.
I agree that this behavior is disturbing. I also believed that getaddrinfo should return at some point. But on that case, it never did.
I must say that it happened on one VM machine, and never reproduced on any other machine. I haven't encountered this bug since.
As far as I understand the design of gRPC's thread pool, I debugged the process and found our that the RPC function called "ClientReader" constructor, which issued an async name resolve operation and waited for its completion. An arbitrary thread from the pool picked up the resolve task, and called (eventually) getaddrinfo. Because this call never returned, the thread in the thread pool never completed the task, so the ClientReader constructor never finished the wait for the async name resolve operation.
I hope this clears things up a bit.