git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: improve performance of PCRE2 bug 2642 bug workaround

From
René Scharfe <l.s.r@web.de>
Date
Mar 22, 2022, 20:26 UTC
Message-ID
<99b0adb6-26ba-293c-3a8f-679f59e7cb4d@web.de>
In-Reply-To
<bd751d5c-2f8b-4c52-72ec-f2b7268a30a8@cs.ucla.edu>
Am 22.03.22 um 17:38 schrieb Paul Eggert:
Show 14 quoted lines
> 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@szeder.dev/

Previous: Paul EggertNext: Paul Eggert
Message 2 of 7 in “improve performance of PCRE2 bug 2642 bug workaround”
  1. Paul EggertMar 22, 2022
  2. René ScharfeMar 22, 2022
  3. Paul EggertMar 22, 2022
  4. Carlo Marcelo Arenas BelónMar 23, 2022
  5. Paul EggertMar 23, 2022
  6. René ScharfeMar 23, 2022
  7. Carlo ArenasMar 23, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.