THRIFT-2539 has been reported, and fixed — but for win32 only, for no apparent reason. The exact same problem reproduces on POSIX.
Namely, when no network interfaces besides lo (the 127.0.0.1 loopback interface) are up, C++ and Python apps linked with Thrift-generated code, both clients and servers — crash by throwing an exception. Even when the intention is exactly to run them on localhost only.
This happens because Thrift library code for TSocket, TServerSocket, TNonblockingServerSocket calls getaddrinfo() to resolve target hostname to connect to/listen on, into concrete IP address (v4 or v6, whichever the system is configured for). To that call, it passes the AI_ADDRCONFIG hint which effectively turns a localhost-only situation into:
Could not resolve host for client socket.
and into this (server-side):
I fail to understand the original reason to pass that AI_ADDRCONFIG hint. It shouldn't be there as I see it.
Further, since Thrift 0.9.2, windows builds of thrift apps don't pass that hint anymore (see
THRIFT-2539), and it seems to be okay.
For comprehension, I'm attaching a sample patch to remove AI_ADDRCONFIG from lib/cpp and lib/py. The main change will be landing via GitHub, per Thrift's contribution process, so please follow there too.