[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#62483: echo a | grep -E -w '((()|a)|())*' # does not terminate
From: |
Jim Meyering |
Subject: |
bug#62483: echo a | grep -E -w '((()|a)|())*' # does not terminate |
Date: |
Sat, 1 Apr 2023 21:15:07 -0700 |
On Mon, Mar 27, 2023 at 6:15 AM Koen Claessen <koen@chalmers.se> wrote:
> Running the command:
>
> echo a | grep -E -w '((()|a)|())*'
>
> does not terminate, and uses a LOT of processor time, for all versions of
> grep I have tried.
>
> This is the smallest case that could be found; simplifying anything in the
> input and/or expression leads to correct behavior.
Thank you! How did you find that?
FYI, this strikes grep-3.10 (on Fedora 37/glibc-2.36-9.fc37.x86_64)
when using LC_ALL=en_US.UTF-8, but not with LC_ALL=C.
I.e., this infloops:
echo a | LC_ALL=en_US.UTF-8 grep -E -w '((()|a)|())*'
but this works as expected and promptly prints its line of input:
echo a | LC_ALL=C grep -E -w '((()|a)|())*'
For now, I've added an expected-failing test case for this bug:
grep-glibc-infloop.patch
Description: Binary data
- bug#62483: echo a | grep -E -w '((()|a)|())*' # does not terminate,
Jim Meyering <=