Re: improve performance of PCRE2 bug 2642 bug workaround

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 22.03.22 um 17:38 schrieb Paul Eggert:
> Today, Carlo Arenas pointed out[1] that GNU grep didn't work around
> PCRE2 bug 2642, which Git grep has a workaround for. While installing
> a GNU grep patch to fix this[2] I noticed that Git's workaround
> appears to be too pessimistic: on older PCRE2 libraries Git grep sets
> PCRE2_NO_START_OPTIMIZE even when PCRE2_CASELESS is not set.
>
> Attached is a patch to Git that I just now cobbled up and have not
> even compiled, much less tested. Please feel free to ignore it, as it
> would merely improve performance on older, buggy PCRE2 libraries and
> that might not be worth your trouble. I'm sending this email as more
> of a thank-you for letting us know indirectly of the PCRE2 bug.
>
> [1]: https://lists.gnu.org/r/grep-devel/2022-03/msg00004.html
> [2]: https://lists.gnu.org/r/grep-devel/2022-03/msg00005.html

Interesting.  So you say bug 2642 [3] requires the flag PCRE2_CASELESS
(i.e. --ignore-case) to be triggered.  (That's probably documented in
Bugzilla, but I'm not authorized to access it.)

However, the looser check works around another bug, if only by accident.
I believe it was fixed upstream by [4].  That other bug was discussed in
the thread Carlo linked to, which started at [5].  You should be able to
reproduce it with something like this (search for leading white-space in
a Unicode haystack):

  $ echo ' Halló' | grep -P '^\s'

An affected version of PCRE2 would loop forever.

However, I can only test any of that with CI jobs, not locally, so
please take my findings with a heap of salt.

René


[3] https://bugs.exim.org/show_bug.cgi?id=2642
[4] https://github.com/PhilipHazel/pcre2/commit/e0c6029
[5] https://lore.kernel.org/git/20220129172542.GB2581@xxxxxxxxxx/




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux