Test script to reproduce the problem:

#!/usr/bin/env perl
$) = "2 2";
print $!;

Result from perl 5.28 under strace:

setgroups(1, [2])                       = 0
setresgid(-1, 2, -1)                    = 0

Result from perl 5.30 under strace:

setgroups(1, [-1])                      = -1 EINVAL (Invalid argument)
setresgid(-1, 2, -1)                    = 0

Patch which broke this upstream:
https://perl5.git.perl.org/perl.git/commitdiff/5d4a52b5c68a11bfc97c2e24806993b84a61eade

Issue is that the new function changes the endptr to the end of the
scanned number and needs to be reset to the end of the string for 
each iteration of the loop.

[YOCTO #13391]

RP
2019/6/14
Upstream-Status: Pending

Index: perl-5.30.0/mg.c
===================================================================
--- perl-5.30.0.orig/mg.c
+++ perl-5.30.0/mg.c
@@ -3179,6 +3256,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
 	    const char *p = SvPV_const(sv, len);
             Groups_t *gary = NULL;
             const char* endptr = p + len;
+            const char* realend = p + len;
             UV uv;
 #ifdef _SC_NGROUPS_MAX
            int maxgrp = sysconf(_SC_NGROUPS_MAX);
@@ -3209,6 +3287,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
                     Newx(gary, i + 1, Groups_t);
                 else
                     Renew(gary, i + 1, Groups_t);
+                endptr = realend;
                 if (grok_atoUV(p, &uv, &endptr))
                     gary[i] = (Groups_t)uv;
                 else {
