Subject: bug#62267: grep-3.9 bug: \d matches multibyte digits

From: Paul Eggert <[email-masked]>
Date: Sun, 19 Mar 2023 16:11:56 -0700

On 2023-03-19 13:44, Jim Meyering wrote:
> I've pushed your change along with the attached.
> I'll probably create another snapshot today.

Thanks. I also installed a minor dfa.c change in Gnulib yesterday to 
pacify Oracle Solaris Studio. No big deal since 'grep' builds OK anyway.

I also ran into a weird issue with test-select on Fedora 37 x86-64. It 
appears to be timing dependent and usually doesn't happen. I can't 
reproduce under strace. This is another Gnulib thing and not relevant to 
grep (other than people might report test failures to bug-grep).

I installed into Gnulib the attached patch which shouldn't hurt but 
which I don't know fixes the bug.

diff --git a/ChangeLog b/ChangeLog
index dfce1a8df7..f42e2ede30 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2023-03-19  Paul Eggert  <[email-masked]>
+
+	test-pselect, test-select: use different ports
+	I have observed rare and hard-to-reproduce problems with the GNU
+	grep release candidate with ‘make -j5 check’ on Fedora 37 x86-64.
+	One possibility is that test-pselect and test-select interfere
+	with each other somehow when run simultaneously, as they use the
+	same port.  Work around this possibility by using different ports
+	from each other, and from test-poll (which also uses 12345).
+	Of course it’d be better if all these tests used system-assigned
+	ports, but I assume that’d take more work.
+	* tests/test-pselect.c, tests/test-select.c (TEST_PORT): New macro.
+	* tests/test-select.h (TEST_PORT): Remove.
+
 2023-03-19  Bruno Haible  <[email-masked]>
 
 	Update MODULES.html.sh.
diff --git a/tests/test-pselect.c b/tests/test-pselect.c
index 41468684c5..a383f1d1b2 100644
--- a/tests/test-pselect.c
+++ b/tests/test-pselect.c
@@ -24,6 +24,7 @@ SIGNATURE_CHECK (pselect, int,
                  (int, fd_set *restrict, fd_set *restrict, fd_set *restrict,
                   struct timespec const *restrict, const sigset_t *restrict));
 
+#define TEST_PORT 12347
 #include "test-select.h"
 
 static int
diff --git a/tests/test-select.c b/tests/test-select.c
index d04be58418..b460060351 100644
--- a/tests/test-select.c
+++ b/tests/test-select.c
@@ -25,6 +25,7 @@
 SIGNATURE_CHECK (select, int, (int, fd_set *, fd_set *, fd_set *,
                                struct timeval *));
 
+#define TEST_PORT 12346
 #include "test-select.h"
 
 int
diff --git a/tests/test-select.h b/tests/test-select.h
index afa996f40c..ceeb485471 100644
--- a/tests/test-select.h
+++ b/tests/test-select.h
@@ -37,8 +37,6 @@
 # include <sys/wait.h>
 #endif
 
-#define TEST_PORT       12345
-
 
 typedef int (*select_fn) (int, fd_set *, fd_set *, fd_set *, struct timeval *);