Subject: Re: bug#15758: grep 2.15 calls abort() on larger searches with -P

From: Santiago <[email-masked]>
Date: Wed, 18 Dec 2013 11:53:01 -0500

El 13/12/13 a las 11:05, Jim Meyering escribió:
> On Fri, Dec 13, 2013 at 10:33 AM, Jim Meyering <[email-masked]> wrote:
> ...
> > Thanks for the suggested patches and report.  Your first patch is
> > almost right.  The problem is that we cannot remove the PCRE_UTF8 flag.
> > If we did that, it would disable UTF-8, reverting an older fix.
> > See tests/pcre-utf8 for examples, or run this:
> >
> >   printf '\342\202\254\n' | LC_ALL=en_US.UTF-8 src/grep -P '^\p{S}'
> >
> > I've added a commit log, improved a related test and attached
> > a slightly different patch, but left you as the "Author".
> > I'll wait for an explicit ACK before pushing it.
> >
> > With that, there is no need to handle PCRE_ERROR_BADUTF8
> > because that should not happen.
> 
> Patch attached, this time.
> Thanks to Eric Blake for the quick off-list prod :-)

Hi Jim,

Thanks for your work, but I'm not sure using both flags works as we
need. Actually, I had tried that before submitting my patch. I got this
using your changes:

$ src/grep -Pr "DEFINE" /usr/lib/linux-kbuild-3.2/
src/grep: invalid UTF-8 byte sequence in input

When I'd expected something like:

$ LC_ALL=C src/grep -Pr "DEFINE" /usr/lib/linux-kbuild-3.2/
/usr/lib/linux-kbuild-3.2/scripts/kernel-doc:   if ($prototype =~ m/DEFINE_SINGLE_EVENT\((.*?),/) {
/usr/lib/linux-kbuild-3.2/scripts/kernel-doc:   if ($prototype =~ m/DEFINE_EVENT\((.*?),(.*?),/) {
/usr/lib/linux-kbuild-3.2/scripts/kernel-doc:## if ($prototype =~ m/SYSCALL_DEFINE0\s*\(\s*(a-zA-Z0-9_)*\s*\)/) {
/usr/lib/linux-kbuild-3.2/scripts/kernel-doc:   if ($prototype =~ m/SYSCALL_DEFINE0/) {
...

Maybe, it is a pcre (v. 8.31) issue. 

Regards,

Santiago