Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Mar 2025 00:21:16 +0000
From:      Jamie Landeg-Jones <jamie@catflap.org>
To:        kevans@FreeBSD.org, jamie@catflap.org, freebsd-current@FreeBSD.org
Subject:   Re: grep(1) bug - duplicate output lines
Message-ID:  <202503120021.52C0LG7D088609@donotpassgo.dyslexicfish.net>
In-Reply-To: <883774ff-c630-72bf-ebc3-cc53e4d40d03@FreeBSD.org>
References:  <202309280240.38S2esgN015958@donotpassgo.dyslexicfish.net> <8d0658e9-8984-a241-ad1d-e5aa1328d7fa@FreeBSD.org> <202309291629.38TGTU56092229@donotpassgo.dyslexicfish.net> <202309291825.38TIPNN2096338@donotpassgo.dyslexicfish.net> <85039cfe-3c59-173d-f2f2-f0ca8e0fa1c8@FreeBSD.org> <883774ff-c630-72bf-ebc3-cc53e4d40d03@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Kyle Evans <kevans@FreeBSD.org> wrote:

> On 9/29/23 15:37, Kyle Evans wrote:
> > On 9/29/23 13:25, Jamie Landeg-Jones wrote:
> >> Jamie Landeg-Jones <jamie@catflap.org> wrote:
> >>
> >>> Brilliant! Thanks for the quick response and fix. It works fine for me -
> >>> I've not managed to break it again :-)
> >>
> >> Famous last words....
> >>
> >> "grep -v" now produces duplicate lines! e.g. :
> >>
> > 
> > Alright, fine, be that way. :-) Try this on top of the existing patch:
> > 
> > https://people.freebsd.org/~kevans/grep-color.diff
> > 
>
> This should be spelled:
>
> https://people.freebsd.org/~kevans/grep-color-addition.diff
>
> Sorry

Hi Kyle. This is an old thread from 2023.
( https://lists.freebsd.org/archives/freebsd-current/2023-September/004762.html )

I've been running with these two patches since you posted them. I notice
that they haven't been commited, and the bug reported in the thread still
exists in current, so I'm replying to the original thread, both in the hope
that this specific problem can be fixed, and then your overall fixes be
submitted to the tree.

Everything else has worked fine all this time, but today I noticed a bug
that can be triggered like this:

 | % echo boo | /usr/bin/grep ''
 | Assertion failed: (pc->matchidx > 0), function procmatch_match, file /usr/src/usr.bin/grep/util.c, line 223.
 | Abort (core dumped)

This is caused by the snippet:

 |        /* Print the matching line, but only if not quiet/binary */
 |         if (mc->printmatch) {
 |                 size_t last_out;
 | 
 |                 if (vflag)
 |                         assert(pc->matchidx == 0);
 |                 else   
 |                         assert(pc->matchidx > 0);

In this case, pc-matchidx is validly 0. However, simply  Removing
the assert from the src causes the duplicate line issue again.

Why grep for '' ? Long story, but it seems to be allowed.
Even if it isn't allowed, it shouldn't be dumping core :-)

Anything further I can do to assist, please let me know.

Cheers, Jamie



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202503120021.52C0LG7D088609>