From b346eb8f1401698b42d7ea0f7552bda15cc7439a Mon Sep 17 00:00:00 2001 From: Yusuke Endoh Date: Fri, 31 May 2024 11:46:36 +0900 Subject: [PATCH] Raise EAI_SYSTEM when pthread_create fails in getaddrinfo Previously, EAI_AGAIN was raised. In our CI, "Temporary failure in name resolution" (EAI_AGAIN) is often raised. We are not sure if this was caused by pthread_create failure or getaddrinfo failure. To make it possible to distinguish between them, this changeset raises EAI_SYSTEM instead of EAI_AGAIN on pthread_create failure. --- ext/socket/raddrinfo.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ext/socket/raddrinfo.c b/ext/socket/raddrinfo.c index 4ca06021ba..090ba1a0c0 100644 --- a/ext/socket/raddrinfo.c +++ b/ext/socket/raddrinfo.c @@ -493,8 +493,10 @@ start: pthread_t th; if (do_pthread_create(&th, do_getaddrinfo, arg) != 0) { + int err = errno; free_getaddrinfo_arg(arg); - return EAI_AGAIN; + errno = err; + return EAI_SYSTEM; } pthread_detach(th); @@ -712,8 +714,10 @@ start: pthread_t th; if (do_pthread_create(&th, do_getnameinfo, arg) != 0) { + int err = errno; free_getnameinfo_arg(arg); - return EAI_AGAIN; + errno = err; + return EAI_SYSTEM; } pthread_detach(th);