Add the patches
This commit is contained in:
		
							parent
							
								
									83883a482f
								
							
						
					
					
						commit
						5689195cb9
					
				
							
								
								
									
										34
									
								
								0001-mpl-limit-scope-on-macos-.local-workaround.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								0001-mpl-limit-scope-on-macos-.local-workaround.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | From fbb8f503df077c726b0c99d467bc984566273b92 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> | ||||||
|  | Date: Tue, 15 Sep 2020 14:20:17 +0200 | ||||||
|  | Subject: [PATCH 1/2] mpl: limit scope on macos .local workaround | ||||||
|  | 
 | ||||||
|  | This was added in 62f4178981617384fc116da4c839baf469bef512. | ||||||
|  | Assuming that "localhost" is equivalent to any name ending in .local | ||||||
|  | is unwarranted. RFC6762 reserves the ".local" suffix for MulticastDNS use, | ||||||
|  | but it is also used in other context for "local network" addresses and such. | ||||||
|  | So let's at least limit the scope to not hurt other systems. | ||||||
|  | ---
 | ||||||
|  |  src/mpl/src/sock/mpl_sockaddr.c | 2 ++ | ||||||
|  |  1 file changed, 2 insertions(+) | ||||||
|  | 
 | ||||||
|  | diff --git a/src/mpl/src/sock/mpl_sockaddr.c b/src/mpl/src/sock/mpl_sockaddr.c
 | ||||||
|  | index 51e9f9973f..9334cc4fb2 100644
 | ||||||
|  | --- a/src/mpl/src/sock/mpl_sockaddr.c
 | ||||||
|  | +++ b/src/mpl/src/sock/mpl_sockaddr.c
 | ||||||
|  | @@ -75,6 +75,7 @@ int MPL_get_sockaddr(const char *s_hostname, MPL_sockaddr_t * p_addr)
 | ||||||
|  |      struct addrinfo *ai_list; | ||||||
|  |      int ret; | ||||||
|  |   | ||||||
|  | +#ifdef __APPLE__
 | ||||||
|  |      /* Macos adds .local to hostname when network is unavailable or limited. | ||||||
|  |       * This will result in long timeout in getaddrinfo below. | ||||||
|  |       * Bypass it by resetting the hostname to "localhost" | ||||||
|  | @@ -83,6 +84,7 @@ int MPL_get_sockaddr(const char *s_hostname, MPL_sockaddr_t * p_addr)
 | ||||||
|  |      if (n > 6 && strcmp(s_hostname + n - 6, ".local") == 0) { | ||||||
|  |          s_hostname = "localhost"; | ||||||
|  |      } | ||||||
|  | +#endif
 | ||||||
|  |   | ||||||
|  |      /* NOTE: there is report that getaddrinfo implementations will call kernel | ||||||
|  |       * even when s_hostname is entirely numerical string and it may cause | ||||||
							
								
								
									
										57
									
								
								0002-mpl-do-not-require-non-loopback-networking.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								0002-mpl-do-not-require-non-loopback-networking.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,57 @@ | |||||||
|  | From ecb72e6699f4f8525115e0b42f81121a1cf8eefa Mon Sep 17 00:00:00 2001 | ||||||
|  | From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> | ||||||
|  | Date: Tue, 15 Sep 2020 14:59:58 +0200 | ||||||
|  | Subject: [PATCH 2/2] mpl: do not require non-loopback networking | ||||||
|  | 
 | ||||||
|  | getaddrinfo(3) says: | ||||||
|  |   If hints.ai_flags includes the AI_ADDRCONFIG flag, then IPv4 | ||||||
|  |   addresses are returned in the list pointed to by res only if the | ||||||
|  |   local system has at least one IPv4 address configured, and IPv6 | ||||||
|  |   addresses are returned only if the local system has at least one | ||||||
|  |   IPv6 address configured. The loopback address is not considered for | ||||||
|  |   this case as valid as a configured address. | ||||||
|  | 
 | ||||||
|  | This means that MPL_get_sockaddr() will fail to resolve the local host | ||||||
|  | (either as "localhost" or by the actual hostname) on a system that has | ||||||
|  | no non-loopback networking. This break exection of mpirun e.g. in a | ||||||
|  | container for tests and such. | ||||||
|  | 
 | ||||||
|  | From https://bugzilla.redhat.com/show_bug.cgi?id=1839007: | ||||||
|  | 
 | ||||||
|  | <mock-chroot> sh-5.0# hostname | ||||||
|  | 68da8e7c62a2404bb4bf75c9ce643e06 | ||||||
|  | <mock-chroot> sh-5.0# module load mpi/mpich-x86_64 | ||||||
|  | <mock-chroot> sh-5.0# mpirun ./a.out | ||||||
|  | Fatal error in PMPI_Init: Other MPI error, error stack: | ||||||
|  | MPIR_Init_thread(586)..............: | ||||||
|  | MPID_Init(224).....................: channel initialization failed | ||||||
|  | MPIDI_CH3_Init(105)................: | ||||||
|  | MPID_nem_init(324).................: | ||||||
|  | MPID_nem_tcp_init(175).............: | ||||||
|  | MPID_nem_tcp_get_business_card(404): | ||||||
|  | MPID_nem_tcp_init(375).............: gethostbyname failed, 68da8e7c62a2404bb4bf75c9ce643e06 (errno 0) | ||||||
|  | 
 | ||||||
|  | <mock-chroot> sh-5.0# ip a | ||||||
|  | 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 | ||||||
|  |     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 | ||||||
|  |     inet 127.0.0.1/8 scope host lo | ||||||
|  |        valid_lft forever preferred_lft forever | ||||||
|  |     inet6 ::1/128 scope host | ||||||
|  |        valid_lft forever preferred_lft forever | ||||||
|  | ---
 | ||||||
|  |  src/mpl/src/sock/mpl_sockaddr.c | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/src/mpl/src/sock/mpl_sockaddr.c b/src/mpl/src/sock/mpl_sockaddr.c
 | ||||||
|  | index 9334cc4fb2..c0e991c68d 100644
 | ||||||
|  | --- a/src/mpl/src/sock/mpl_sockaddr.c
 | ||||||
|  | +++ b/src/mpl/src/sock/mpl_sockaddr.c
 | ||||||
|  | @@ -98,7 +98,7 @@ int MPL_get_sockaddr(const char *s_hostname, MPL_sockaddr_t * p_addr)
 | ||||||
|  |      ai_hint.ai_family = af_type; | ||||||
|  |      ai_hint.ai_socktype = SOCK_STREAM; | ||||||
|  |      ai_hint.ai_protocol = IPPROTO_TCP; | ||||||
|  | -    ai_hint.ai_flags = AI_ADDRCONFIG | AI_V4MAPPED;
 | ||||||
|  | +    ai_hint.ai_flags = AI_V4MAPPED;
 | ||||||
|  |      ret = getaddrinfo(s_hostname, NULL, &ai_hint, &ai_list); | ||||||
|  |      if (ret) { | ||||||
|  |          return ret; | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user