Subject: bug#18806: grep -rP getline crashes prematurely (without displaying all results) on invalid UTF-8 input with LC_ALL=en_US.UTF-8

From: Paul Eggert <[email-masked]>
Date: Sat, 25 Oct 2014 22:49:32 -0700

Jim Meyering wrote:
> Yes.  And a timeout of 3s should be fine.  Thanks.  Please push that.

Done, with the attached patch.
From ee05d3c97035cbc67bdae70c7d7e6a4e47f0cb1f Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email-masked]>
Date: Sat, 25 Oct 2014 22:47:39 -0700
Subject: [PATCH] tests: work around older libpcre bugs when testing -P and
 UTF-8

* tests/pcre-invalid-utf8-input: Add require_timeout_ and
require_compiled_in_MB_support.  Put a timeout of 3 seconds on
grep, to avoid having this test case loop forever with older
versions of libpcre, such as those found on RHEL 6.5.
Reported by Jim Meyering in: http://bugs.gnu.org/18806#34
---
 tests/pcre-invalid-utf8-input | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/tests/pcre-invalid-utf8-input b/tests/pcre-invalid-utf8-input
index 78bd1cf..71d4877 100755
--- a/tests/pcre-invalid-utf8-input
+++ b/tests/pcre-invalid-utf8-input
@@ -9,21 +9,23 @@
 
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 require_pcre_
+require_timeout_
 require_en_utf8_locale_
+require_compiled_in_MB_support
 
 fail=0
 
 printf 'j\202j\nj\nk\202\n' > in || framework_failure_
 
-LC_ALL=en_US.UTF-8 grep -P j in
+LC_ALL=en_US.UTF-8 timeout 3 grep -P j in
 test $? -eq 0 || fail=1
 
-LC_ALL=en_US.UTF-8 grep -P 'k$' in
+LC_ALL=en_US.UTF-8 timeout 3 grep -P 'k$' in
 test $? -eq 1 || fail=1
 
 echo k >exp
 
-LC_ALL=en_US.UTF-8 grep -aoP 'k*' in >out || fail=1
+LC_ALL=en_US.UTF-8 timeout 3 grep -aoP 'k*' in >out || fail=1
 compare exp out || fail=1
 
 Exit $fail
-- 
1.9.3