diff mbox series

gawk: improve randtest stability

Message ID 20260605081737.1568-1-adityags2004@gmail.com
State New
Headers show
Series gawk: improve randtest stability | expand

Commit Message

Aditya G.S June 5, 2026, 8:17 a.m. UTC
Backport upstream fix to improve stability of randtest.sh by
retrying when sigma is too small, avoiding intermittent failures.

[YOCTO #16254]

Signed-off-by: Aditya GS <adityags2004@gmail.com>
---
 .../gawk/files/randtest-fix.patch             | 138 ++++++++++++++++++
 meta/recipes-extended/gawk/gawk_5.4.0.bb      |   1 +
 2 files changed, 139 insertions(+)
 create mode 100644 meta/recipes-extended/gawk/files/randtest-fix.patch

Comments

Alexander Kanavin June 5, 2026, 10:18 a.m. UTC | #1
Hello Aditya,

an earlier version of the patch was already fixed up and merged; the
patch review participants decided that it's better to fix the
frustrating CI failures quicker than do more review-fix-resend cycles:
https://git.openembedded.org/openembedded-core/commit/?id=ccabae3036a713cac8b08731b765ff1dc3ed93eb

I'd suggest you rebase the latest commit on top of current oe-core
master with 'git rebase', and send any remaining differences (e.g. the
missing signed-off-by) as a separate patch (remember to also edit the
commit message so it matches the patch content).

Alex

On Fri, 5 Jun 2026 at 10:18, Aditya GS <adityags2004@gmail.com> wrote:
>
> Backport upstream fix to improve stability of randtest.sh by
> retrying when sigma is too small, avoiding intermittent failures.
>
> [YOCTO #16254]
>
> Signed-off-by: Aditya GS <adityags2004@gmail.com>
> ---
>  .../gawk/files/randtest-fix.patch             | 138 ++++++++++++++++++
>  meta/recipes-extended/gawk/gawk_5.4.0.bb      |   1 +
>  2 files changed, 139 insertions(+)
>  create mode 100644 meta/recipes-extended/gawk/files/randtest-fix.patch
>
> diff --git a/meta/recipes-extended/gawk/files/randtest-fix.patch b/meta/recipes-extended/gawk/files/randtest-fix.patch
> new file mode 100644
> index 0000000000..0aafa0f282
> --- /dev/null
> +++ b/meta/recipes-extended/gawk/files/randtest-fix.patch
> @@ -0,0 +1,138 @@
> +From f2250f4bc864913437619af7a9834a1c24915acd Mon Sep 17 00:00:00 2001
> +From: "Arnold D. Robbins" <arnold@skeeve.com>
> +Date: Thu, 28 May 2026 09:52:41 -0400
> +Subject: Improve test/randtest.sh.
> +
> +Upstream-Status: Backport
> +https://cgit.git.savannah.gnu.org/cgit/gawk.git/commit/?id=f2250f4bc864913437619af7a9834a1c24915acd
> +
> +Signed-off-by: Aditya GS <adityags2004@gmail.com>
> +
> +---
> +
> +diff --git a/test/randtest.sh b/test/randtest.sh
> +index 597376a8..6ae6f830 100755
> +--- a/test/randtest.sh
> ++++ b/test/randtest.sh
> +@@ -45,68 +45,77 @@ $AWK 'BEGIN{
> +     nsamples=('$NSAMPLES');
> +     max_allowed_sigma=('$MAX_ALLOWED_SIGMA');
> +     nruns=('$NRUNS');
> +-    for(tau=0;tau<nsamples/2;tau++) corr[tau]=0;
> ++    max_retries=5
> +
> +-    for(run=0;run<nruns;run++) {
> +-      sum=0;
> ++    for (retry=0; retry<max_retries; retry++) {
> ++        for(tau=0; tau<nsamples/2; tau++) corr[tau]=0;
> +
> +-      # Fill an array with a sequence of samples that are a
> +-      # function of pairs of rand() values.
> ++        for(run=0; run<nruns; run++) {
> ++            sum=0;
> +
> +-      for(i=0;i<nsamples;i++) {
> +-         samp[i]=((rand()-0.5)*(rand()-0.5))^2;
> +-         sum=sum+samp[i];
> +-         }
> ++          # Fill an array with a sequence of samples that are a
> ++          # function of pairs of rand() values.
> +
> +-      # Subtract off the mean of the sequence:
> ++            for(i=0; i<nsamples; i++) {
> ++                samp[i]=((rand()-0.5)*(rand()-0.5))^2;
> ++              sum=sum+samp[i];
> ++            }
> +
> +-      mean=sum/nsamples;
> +-      for(i=0;i<nsamples;i++) samp[i]=samp[i]-mean;
> ++          # Subtract off the mean of the sequence:
> +
> +-      # Calculate an autocorrelation function on the sequence.
> +-      # Because the values of rand() should be independent, there
> +-      # should be no peaks in the autocorrelation.
> ++          mean=sum/nsamples;
> ++          for(i=0;i<nsamples;i++) samp[i]=samp[i]-mean;
> +
> +-      for(tau=0;tau<nsamples/2;tau++) {
> +-          sum=0;
> +-          for(i=0;i<nsamples/2;i++) sum=sum+samp[i]*samp[i+tau];
> +-          corr[tau]=corr[tau]+sum;
> +-          }
> ++          # Calculate an autocorrelation function on the sequence.
> ++          # Because the values of rand() should be independent, there
> ++          # should be no peaks in the autocorrelation.
> +
> +-      }
> +-    # Normalize the autocorrelation to the tau=0 value.
> ++            for(tau=0; tau<nsamples/2; tau++) {
> ++              sum=0;
> ++              for(i=0;i<nsamples/2;i++) sum=sum+samp[i]*samp[i+tau];
> ++              corr[tau]=corr[tau]+sum;
> ++            }
> +
> +-    max_corr=corr[0];
> +-    for(tau=0;tau<nsamples/2;tau++) corr[tau]=corr[tau]/max_corr;
> ++        }
> ++        # Normalize the autocorrelation to the tau=0 value.
> +
> +-    # OPTIONALLY Print out the autocorrelation values:
> ++        max_corr=corr[0];
> ++        for(tau=0;tau<nsamples/2;tau++) corr[tau]=corr[tau]/max_corr;
> +
> +-    # for(tau=0;tau<nsamples/2;tau++) print tau, corr[tau] > "pairpower_corr.data";
> ++        # OPTIONALLY Print out the autocorrelation values:
> +
> +-    # Calculate the sigma for the non-zero tau values:
> ++        # for(tau=0;tau<nsamples/2;tau++) print tau, corr[tau] > "pairpower_corr.data";
> +
> +-    power_sum=0;
> ++        # Calculate the sigma for the non-zero tau values:
> +
> +-    for(tau=1;tau<nsamples/2;tau++) power_sum=power_sum+(corr[tau])^2;
> ++        power_sum=0;
> +
> +-    sigma=sqrt(power_sum/(nsamples/2-1));
> ++        for(tau=1;tau<nsamples/2;tau++) power_sum=power_sum+(corr[tau])^2;
> +
> +-    # See if any of the correlations exceed a reasonable number of sigma:
> ++        sigma=sqrt(power_sum/(nsamples/2-1));
> +
> +-    passed=1;
> +-    for(tau=1;tau<nsamples/2;tau++) {
> +-      if ( abs(corr[tau])/sigma > max_allowed_sigma ) {
> +-          print "Tau=", tau ", Autocorr=", corr[tau]/sigma, "sigma";
> +-          passed=0;
> +-          }
> ++        if (sigma < 1e-6) {
> ++            print "Sigma too small, retrying run", retry
> ++            continue
> +         }
> +-    if(!passed) {
> +-      print "Test failed."
> +-      exit(1);
> ++
> ++        # See if any of the correlations exceed a reasonable number of sigma:
> ++
> ++        for(tau=1;tau<nsamples/2;tau++) {
> ++            if (abs(corr[tau])/sigma > max_allowed_sigma) {
> ++                print "Tau=", tau ", Autocorr=", corr[tau]/sigma, "sigma";
> ++                print "Test failed."
> ++                exit 1
> ++            }
> +         }
> +-    else exit (0);
> ++
> ++        exit 0
> +     }
> +
> ++    print "Test failed after retries due to unstable sigma"
> ++    exit 1
> ++}
> ++
> + function abs(abs_input) { return(sqrt(abs_input^2)) ; }
> + '
> +
> +--
> +2.34.1
> +
> diff --git a/meta/recipes-extended/gawk/gawk_5.4.0.bb b/meta/recipes-extended/gawk/gawk_5.4.0.bb
> index d7211f28f3..71e7ddb31f 100644
> --- a/meta/recipes-extended/gawk/gawk_5.4.0.bb
> +++ b/meta/recipes-extended/gawk/gawk_5.4.0.bb
> @@ -28,6 +28,7 @@ PACKAGECONFIG[pma-if-64bit] = "--enable-pma,--disable-pma, "
>  SRC_URI = "${GNU_MIRROR}/gawk/gawk-${PV}.tar.xz \
>             file://run-ptest \
>             file://0001-configure.ac-re-enable-disabled-printf-features.patch \
> +          file://randtest-fix.patch \
>             "
>
>  SRC_URI[sha256sum] = "3dd430f0cd3b4428c6c3f6afc021b9cd3c1f8c93f7a688dc268ca428a90b4ac1"
> --
> 2.34.1
>
Aditya G.S June 5, 2026, 10:27 a.m. UTC | #2
Hi Alex,

Thanks for the update.

I've reviewed the merged commit and verified that the fix is already
present and complete, including the required metadata.

My latest submission (v11) also included the missing Signed-off-by, so I
believe there are no remaining differences to address.

Thanks again for reviewing and integrating the fix.

Regards,
Aditya

On Fri, Jun 5, 2026, 3:49 PM Alexander Kanavin <alex.kanavin@gmail.com>
wrote:

> Hello Aditya,
>
> an earlier version of the patch was already fixed up and merged; the
> patch review participants decided that it's better to fix the
> frustrating CI failures quicker than do more review-fix-resend cycles:
>
> https://git.openembedded.org/openembedded-core/commit/?id=ccabae3036a713cac8b08731b765ff1dc3ed93eb
>
> I'd suggest you rebase the latest commit on top of current oe-core
> master with 'git rebase', and send any remaining differences (e.g. the
> missing signed-off-by) as a separate patch (remember to also edit the
> commit message so it matches the patch content).
>
> Alex
>
> On Fri, 5 Jun 2026 at 10:18, Aditya GS <adityags2004@gmail.com> wrote:
> >
> > Backport upstream fix to improve stability of randtest.sh by
> > retrying when sigma is too small, avoiding intermittent failures.
> >
> > [YOCTO #16254]
> >
> > Signed-off-by: Aditya GS <adityags2004@gmail.com>
> > ---
> >  .../gawk/files/randtest-fix.patch             | 138 ++++++++++++++++++
> >  meta/recipes-extended/gawk/gawk_5.4.0.bb      |   1 +
> >  2 files changed, 139 insertions(+)
> >  create mode 100644 meta/recipes-extended/gawk/files/randtest-fix.patch
> >
> > diff --git a/meta/recipes-extended/gawk/files/randtest-fix.patch
> b/meta/recipes-extended/gawk/files/randtest-fix.patch
> > new file mode 100644
> > index 0000000000..0aafa0f282
> > --- /dev/null
> > +++ b/meta/recipes-extended/gawk/files/randtest-fix.patch
> > @@ -0,0 +1,138 @@
> > +From f2250f4bc864913437619af7a9834a1c24915acd Mon Sep 17 00:00:00 2001
> > +From: "Arnold D. Robbins" <arnold@skeeve.com>
> > +Date: Thu, 28 May 2026 09:52:41 -0400
> > +Subject: Improve test/randtest.sh.
> > +
> > +Upstream-Status: Backport
> > +
> https://cgit.git.savannah.gnu.org/cgit/gawk.git/commit/?id=f2250f4bc864913437619af7a9834a1c24915acd
> > +
> > +Signed-off-by: Aditya GS <adityags2004@gmail.com>
> > +
> > +---
> > +
> > +diff --git a/test/randtest.sh b/test/randtest.sh
> > +index 597376a8..6ae6f830 100755
> > +--- a/test/randtest.sh
> > ++++ b/test/randtest.sh
> > +@@ -45,68 +45,77 @@ $AWK 'BEGIN{
> > +     nsamples=('$NSAMPLES');
> > +     max_allowed_sigma=('$MAX_ALLOWED_SIGMA');
> > +     nruns=('$NRUNS');
> > +-    for(tau=0;tau<nsamples/2;tau++) corr[tau]=0;
> > ++    max_retries=5
> > +
> > +-    for(run=0;run<nruns;run++) {
> > +-      sum=0;
> > ++    for (retry=0; retry<max_retries; retry++) {
> > ++        for(tau=0; tau<nsamples/2; tau++) corr[tau]=0;
> > +
> > +-      # Fill an array with a sequence of samples that are a
> > +-      # function of pairs of rand() values.
> > ++        for(run=0; run<nruns; run++) {
> > ++            sum=0;
> > +
> > +-      for(i=0;i<nsamples;i++) {
> > +-         samp[i]=((rand()-0.5)*(rand()-0.5))^2;
> > +-         sum=sum+samp[i];
> > +-         }
> > ++          # Fill an array with a sequence of samples that are a
> > ++          # function of pairs of rand() values.
> > +
> > +-      # Subtract off the mean of the sequence:
> > ++            for(i=0; i<nsamples; i++) {
> > ++                samp[i]=((rand()-0.5)*(rand()-0.5))^2;
> > ++              sum=sum+samp[i];
> > ++            }
> > +
> > +-      mean=sum/nsamples;
> > +-      for(i=0;i<nsamples;i++) samp[i]=samp[i]-mean;
> > ++          # Subtract off the mean of the sequence:
> > +
> > +-      # Calculate an autocorrelation function on the sequence.
> > +-      # Because the values of rand() should be independent, there
> > +-      # should be no peaks in the autocorrelation.
> > ++          mean=sum/nsamples;
> > ++          for(i=0;i<nsamples;i++) samp[i]=samp[i]-mean;
> > +
> > +-      for(tau=0;tau<nsamples/2;tau++) {
> > +-          sum=0;
> > +-          for(i=0;i<nsamples/2;i++) sum=sum+samp[i]*samp[i+tau];
> > +-          corr[tau]=corr[tau]+sum;
> > +-          }
> > ++          # Calculate an autocorrelation function on the sequence.
> > ++          # Because the values of rand() should be independent, there
> > ++          # should be no peaks in the autocorrelation.
> > +
> > +-      }
> > +-    # Normalize the autocorrelation to the tau=0 value.
> > ++            for(tau=0; tau<nsamples/2; tau++) {
> > ++              sum=0;
> > ++              for(i=0;i<nsamples/2;i++) sum=sum+samp[i]*samp[i+tau];
> > ++              corr[tau]=corr[tau]+sum;
> > ++            }
> > +
> > +-    max_corr=corr[0];
> > +-    for(tau=0;tau<nsamples/2;tau++) corr[tau]=corr[tau]/max_corr;
> > ++        }
> > ++        # Normalize the autocorrelation to the tau=0 value.
> > +
> > +-    # OPTIONALLY Print out the autocorrelation values:
> > ++        max_corr=corr[0];
> > ++        for(tau=0;tau<nsamples/2;tau++) corr[tau]=corr[tau]/max_corr;
> > +
> > +-    # for(tau=0;tau<nsamples/2;tau++) print tau, corr[tau] >
> "pairpower_corr.data";
> > ++        # OPTIONALLY Print out the autocorrelation values:
> > +
> > +-    # Calculate the sigma for the non-zero tau values:
> > ++        # for(tau=0;tau<nsamples/2;tau++) print tau, corr[tau] >
> "pairpower_corr.data";
> > +
> > +-    power_sum=0;
> > ++        # Calculate the sigma for the non-zero tau values:
> > +
> > +-    for(tau=1;tau<nsamples/2;tau++) power_sum=power_sum+(corr[tau])^2;
> > ++        power_sum=0;
> > +
> > +-    sigma=sqrt(power_sum/(nsamples/2-1));
> > ++        for(tau=1;tau<nsamples/2;tau++)
> power_sum=power_sum+(corr[tau])^2;
> > +
> > +-    # See if any of the correlations exceed a reasonable number of
> sigma:
> > ++        sigma=sqrt(power_sum/(nsamples/2-1));
> > +
> > +-    passed=1;
> > +-    for(tau=1;tau<nsamples/2;tau++) {
> > +-      if ( abs(corr[tau])/sigma > max_allowed_sigma ) {
> > +-          print "Tau=", tau ", Autocorr=", corr[tau]/sigma, "sigma";
> > +-          passed=0;
> > +-          }
> > ++        if (sigma < 1e-6) {
> > ++            print "Sigma too small, retrying run", retry
> > ++            continue
> > +         }
> > +-    if(!passed) {
> > +-      print "Test failed."
> > +-      exit(1);
> > ++
> > ++        # See if any of the correlations exceed a reasonable number of
> sigma:
> > ++
> > ++        for(tau=1;tau<nsamples/2;tau++) {
> > ++            if (abs(corr[tau])/sigma > max_allowed_sigma) {
> > ++                print "Tau=", tau ", Autocorr=", corr[tau]/sigma,
> "sigma";
> > ++                print "Test failed."
> > ++                exit 1
> > ++            }
> > +         }
> > +-    else exit (0);
> > ++
> > ++        exit 0
> > +     }
> > +
> > ++    print "Test failed after retries due to unstable sigma"
> > ++    exit 1
> > ++}
> > ++
> > + function abs(abs_input) { return(sqrt(abs_input^2)) ; }
> > + '
> > +
> > +--
> > +2.34.1
> > +
> > diff --git a/meta/recipes-extended/gawk/gawk_5.4.0.bb
> b/meta/recipes-extended/gawk/gawk_5.4.0.bb
> > index d7211f28f3..71e7ddb31f 100644
> > --- a/meta/recipes-extended/gawk/gawk_5.4.0.bb
> > +++ b/meta/recipes-extended/gawk/gawk_5.4.0.bb
> > @@ -28,6 +28,7 @@ PACKAGECONFIG[pma-if-64bit] =
> "--enable-pma,--disable-pma, "
> >  SRC_URI = "${GNU_MIRROR}/gawk/gawk-${PV}.tar.xz \
> >             file://run-ptest \
> >
>  file://0001-configure.ac-re-enable-disabled-printf-features.patch \
> > +          file://randtest-fix.patch \
> >             "
> >
> >  SRC_URI[sha256sum] =
> "3dd430f0cd3b4428c6c3f6afc021b9cd3c1f8c93f7a688dc268ca428a90b4ac1"
> > --
> > 2.34.1
> >
>
Alexander Kanavin June 5, 2026, 10:34 a.m. UTC | #3
On Fri, 5 Jun 2026 at 12:28, Aditya G.S <adityags2004@gmail.com> wrote:
> I've reviewed the merged commit and verified that the fix is already present and complete, including the required metadata.
>
> My latest submission (v11) also included the missing Signed-off-by, so I believe there are no remaining differences to address.

Your latest submission has the signed-off-by, but the version that got
merged in master does not. So you can rebase your latest submission on
top of master branch (use 'git rebase'), and it would reduce it to
just adding the signed-off-by, and then you can re-submit just that
change.

Alex
diff mbox series

Patch

diff --git a/meta/recipes-extended/gawk/files/randtest-fix.patch b/meta/recipes-extended/gawk/files/randtest-fix.patch
new file mode 100644
index 0000000000..0aafa0f282
--- /dev/null
+++ b/meta/recipes-extended/gawk/files/randtest-fix.patch
@@ -0,0 +1,138 @@ 
+From f2250f4bc864913437619af7a9834a1c24915acd Mon Sep 17 00:00:00 2001
+From: "Arnold D. Robbins" <arnold@skeeve.com>
+Date: Thu, 28 May 2026 09:52:41 -0400
+Subject: Improve test/randtest.sh.
+
+Upstream-Status: Backport
+https://cgit.git.savannah.gnu.org/cgit/gawk.git/commit/?id=f2250f4bc864913437619af7a9834a1c24915acd
+
+Signed-off-by: Aditya GS <adityags2004@gmail.com>
+
+---
+
+diff --git a/test/randtest.sh b/test/randtest.sh
+index 597376a8..6ae6f830 100755
+--- a/test/randtest.sh
++++ b/test/randtest.sh
+@@ -45,68 +45,77 @@ $AWK 'BEGIN{
+     nsamples=('$NSAMPLES');
+     max_allowed_sigma=('$MAX_ALLOWED_SIGMA');
+     nruns=('$NRUNS');
+-    for(tau=0;tau<nsamples/2;tau++) corr[tau]=0;
++    max_retries=5
+ 
+-    for(run=0;run<nruns;run++) {
+-	sum=0;
++    for (retry=0; retry<max_retries; retry++) {
++        for(tau=0; tau<nsamples/2; tau++) corr[tau]=0;
+ 
+-	# Fill an array with a sequence of samples that are a
+-	# function of pairs of rand() values.
++        for(run=0; run<nruns; run++) {
++            sum=0;
+ 
+-	for(i=0;i<nsamples;i++) {
+-	   samp[i]=((rand()-0.5)*(rand()-0.5))^2;
+-	   sum=sum+samp[i];
+-	   }
++	    # Fill an array with a sequence of samples that are a
++	    # function of pairs of rand() values.
+ 
+-	# Subtract off the mean of the sequence:
++            for(i=0; i<nsamples; i++) {
++                samp[i]=((rand()-0.5)*(rand()-0.5))^2;
++	        sum=sum+samp[i];
++            }
+ 
+-	mean=sum/nsamples;
+-	for(i=0;i<nsamples;i++) samp[i]=samp[i]-mean;
++	    # Subtract off the mean of the sequence:
+ 
+-	# Calculate an autocorrelation function on the sequence.
+-	# Because the values of rand() should be independent, there
+-	# should be no peaks in the autocorrelation.
++	    mean=sum/nsamples;
++	    for(i=0;i<nsamples;i++) samp[i]=samp[i]-mean;
+ 
+-	for(tau=0;tau<nsamples/2;tau++) {
+-	    sum=0;
+-	    for(i=0;i<nsamples/2;i++) sum=sum+samp[i]*samp[i+tau];
+-	    corr[tau]=corr[tau]+sum;
+-	    }
++	    # Calculate an autocorrelation function on the sequence.
++	    # Because the values of rand() should be independent, there
++	    # should be no peaks in the autocorrelation.
+ 
+-	}
+-    # Normalize the autocorrelation to the tau=0 value.
++            for(tau=0; tau<nsamples/2; tau++) {
++	        sum=0;
++	        for(i=0;i<nsamples/2;i++) sum=sum+samp[i]*samp[i+tau];
++	        corr[tau]=corr[tau]+sum;
++            }
+ 
+-    max_corr=corr[0];
+-    for(tau=0;tau<nsamples/2;tau++) corr[tau]=corr[tau]/max_corr;
++        }
++        # Normalize the autocorrelation to the tau=0 value.
+ 
+-    # OPTIONALLY Print out the autocorrelation values:
++        max_corr=corr[0];
++        for(tau=0;tau<nsamples/2;tau++) corr[tau]=corr[tau]/max_corr;
+ 
+-    # for(tau=0;tau<nsamples/2;tau++) print tau, corr[tau] > "pairpower_corr.data";
++        # OPTIONALLY Print out the autocorrelation values:
+ 
+-    # Calculate the sigma for the non-zero tau values: 
++        # for(tau=0;tau<nsamples/2;tau++) print tau, corr[tau] > "pairpower_corr.data";
+ 
+-    power_sum=0;
++        # Calculate the sigma for the non-zero tau values: 
+ 
+-    for(tau=1;tau<nsamples/2;tau++) power_sum=power_sum+(corr[tau])^2;
++        power_sum=0;
+ 
+-    sigma=sqrt(power_sum/(nsamples/2-1));
++        for(tau=1;tau<nsamples/2;tau++) power_sum=power_sum+(corr[tau])^2;
+ 
+-    # See if any of the correlations exceed a reasonable number of sigma:
++        sigma=sqrt(power_sum/(nsamples/2-1));
+ 
+-    passed=1;
+-    for(tau=1;tau<nsamples/2;tau++) {
+-	if ( abs(corr[tau])/sigma > max_allowed_sigma ) {
+-	    print "Tau=", tau ", Autocorr=", corr[tau]/sigma, "sigma";
+-	    passed=0;
+-	    }
++        if (sigma < 1e-6) {
++            print "Sigma too small, retrying run", retry
++            continue
+         }
+-    if(!passed) {
+-	print "Test failed."
+-	exit(1);
++
++        # See if any of the correlations exceed a reasonable number of sigma:
++
++        for(tau=1;tau<nsamples/2;tau++) {
++            if (abs(corr[tau])/sigma > max_allowed_sigma) {
++                print "Tau=", tau ", Autocorr=", corr[tau]/sigma, "sigma";
++                print "Test failed."
++                exit 1
++            }
+         }
+-    else exit (0);
++
++        exit 0
+     }
+ 
++    print "Test failed after retries due to unstable sigma"
++    exit 1
++}
++
+ function abs(abs_input) { return(sqrt(abs_input^2)) ; }
+ '
+ 
+-- 
+2.34.1
+
diff --git a/meta/recipes-extended/gawk/gawk_5.4.0.bb b/meta/recipes-extended/gawk/gawk_5.4.0.bb
index d7211f28f3..71e7ddb31f 100644
--- a/meta/recipes-extended/gawk/gawk_5.4.0.bb
+++ b/meta/recipes-extended/gawk/gawk_5.4.0.bb
@@ -28,6 +28,7 @@  PACKAGECONFIG[pma-if-64bit] = "--enable-pma,--disable-pma, "
 SRC_URI = "${GNU_MIRROR}/gawk/gawk-${PV}.tar.xz \
            file://run-ptest \
            file://0001-configure.ac-re-enable-disabled-printf-features.patch \
+	   file://randtest-fix.patch \
            "
 
 SRC_URI[sha256sum] = "3dd430f0cd3b4428c6c3f6afc021b9cd3c1f8c93f7a688dc268ca428a90b4ac1"