[Bug 276001] sysutils/slurm-wlm: slurmctld fails to start

From: <bugzilla-noreply_at_freebsd.org>
Date: Fri, 29 Dec 2023 20:35:34 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=276001

--- Comment #1 from Jason W. Bacon <jwb@freebsd.org> ---
The patches below resolve the invalid argument errors on startup, though there
may be other bind() calls that need fixing.  There are also issues with slurmd
trying to start the cgroups plugin.

diff -ruN --exclude=CVS --exclude=.svn
/usr/ports/sysutils/slurm-wlm/files/patch-src_common_net.c
/usr/ports/wip/slurm-wlm-devel/files/patch-src_common_net.c
--- /usr/ports/sysutils/slurm-wlm/files/patch-src_common_net.c  1969-12-31
18:00:00.000000000 -0600
+++ /usr/ports/wip/slurm-wlm-devel/files/patch-src_common_net.c 2023-12-29
14:26:37.856355000 -0600
@@ -0,0 +1,25 @@
+--- src/common/net.c.orig      2023-12-29 19:19:05 UTC
++++ src/common/net.c
+@@ -90,11 +90,12 @@ strong_alias(net_stream_listen,           
slurm_net_stream_list
+ int net_stream_listen(int *fd, uint16_t *port)
+ {
+       slurm_addr_t sin;
+-      socklen_t len = sizeof(sin);
++      socklen_t len;
+       int val = 1;
+ 
+       /* bind ephemeral port */
+       slurm_setup_addr(&sin, 0);
++      len = sin.ss_len;
+ 
+       if ((*fd = socket(sin.ss_family, SOCK_STREAM, IPPROTO_TCP)) < 0)
+               return -1;
+@@ -219,7 +220,7 @@ static bool _is_port_ok(int s, uint16_t port, bool loc
+               return false;
+       }
+ 
+-      if (bind(s, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
++      if (bind(s, (struct sockaddr *) &addr, addr.ss_len) < 0) {
+               log_flag(NET, "%s: bind() failed on port:%d fd:%d: %m",
+                        __func__, port, s);
+               return false;
diff -ruN --exclude=CVS --exclude=.svn
/usr/ports/sysutils/slurm-wlm/files/patch-src_common_slurm__protocol__socket.c
/usr/ports/wip/slurm-wlm-devel/files/patch-src_common_slurm__protocol__socket.c
---
/usr/ports/sysutils/slurm-wlm/files/patch-src_common_slurm__protocol__socket.c 
    1969-12-31 18:00:00.000000000 -0600
+++
/usr/ports/wip/slurm-wlm-devel/files/patch-src_common_slurm__protocol__socket.c
    2023-12-29 14:26:37.856433000 -0600
@@ -0,0 +1,20 @@
+--- src/common/slurm_protocol_socket.c.orig    2023-12-29 19:26:12 UTC
++++ src/common/slurm_protocol_socket.c
+@@ -116,7 +116,7 @@ static void _sock_bind_wild(int sockfd)
+       slurm_setup_addr(&sin, RANDOM_USER_PORT);
+ 
+       for (retry=0; retry < PORT_RETRIES ; retry++) {
+-              rc = bind(sockfd, (struct sockaddr *) &sin, sizeof(sin));
++              rc = bind(sockfd, (struct sockaddr *) &sin, sin.ss_len);
+               if (rc >= 0)
+                       break;
+               slurm_set_port(&sin, RANDOM_USER_PORT);
+@@ -511,7 +511,7 @@ extern int slurm_init_msg_engine(slurm_addr_t *addr, b
+               goto error;
+       }
+ 
+-      rc = bind(fd, (struct sockaddr const *) addr, sizeof(*addr));
++      rc = bind(fd, (struct sockaddr const *) addr, addr->ss_len);
+       if (rc < 0) {
+               format_print(log_lvl, "Error binding slurm stream socket: %m");
+               goto error;

-- 
You are receiving this mail because:
You are the assignee for the bug.