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