diff --git a/src/slurmctld/groups.c b/src/slurmctld/groups.c
index 3894ae524461685fa0a05e818897930ce4454766..5abb9901774a3a8cae8932b31710048148c33af8 100644
--- a/src/slurmctld/groups.c
+++ b/src/slurmctld/groups.c
@@ -61,6 +61,8 @@
 #include "src/common/xmalloc.h"
 #include "src/common/xstring.h"
 
+#include "slurm/slurm_errno.h"
+
 #define _DEBUG 0
 
 static void   _cache_del_func(void *x);
@@ -113,6 +115,7 @@ extern uid_t *get_group_members(char *group_name)
 	/* We need to check for !grp_result, since it appears some
 	 * versions of this function do not return an error on failure. */
 	while (1) {
+		slurm_seterrno(0);
 		res = getgrnam_r(group_name, &grp, grp_buffer, buflen,
 				 &grp_result);
 		if (res != 0) {
@@ -135,6 +138,7 @@ extern uid_t *get_group_members(char *group_name)
 #ifdef HAVE_AIX
 	setgrent_r(&fp);
 	while (1) {
+		slurm_seterrno(0);
 		res = getgrent_r(&grp, grp_buffer, buflen, &fp);
 		if (res != 0) {
 			if (errno == ERANGE) {
@@ -153,6 +157,7 @@ extern uid_t *get_group_members(char *group_name)
 #else
 	setgrent();
 	while (1) {
+		slurm_seterrno(0);
 		res = getgrent_r(&grp, grp_buffer, buflen, &grp_result);
 		if (res != 0) {
 			if (errno == ERANGE) {