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

[PATCH 00/10] grep/pcre2: memory allocation fixes

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Feb 4, 2021, 21:05 UTC
Message-ID
<20210204210556.25242-1-avarab@gmail.com>
In-Reply-To
<191d3a2280232ff98964fd42bfe0bc85ee3708f5.1571227824.git.gitgitgadget@gmail.com>

This series fixes up bugs in our PCRE v2 wrapper code and how it handles malloc()/free().

Junio: I'm splitting this off my recently sent 25 patch series, which
I should probably have sent as an RFC:
https://lore.kernel.org/git/20210203032811.14979-1-avarab@gmail.com/

It's on top of "next", as it would otherwise conflict with my in-flight ab/grep-pcre-invalid-utf8, ab/lose-grep-debug and ab/retire-pcre1.

06/10 is a follow-up improvement (not a fix, the in-flight works fine too) for ab/grep-pcre-invalid-utf8. The latter two just touch adjacent lines of code.

There's no notable new behavior here, just cleanup of existing functionality. In mid-2019 there was a lot of discussion around the code being fixed here:

    https://lore.kernel.org/git/pull.306.git.gitgitgadget@gmail.com/#t
    https://lore.kernel.org/git/pull.402.git.1571227613.gitgitgadget@gmail.com/

As discussed in 08/10 I believe that fix was so difficult to get right because it was starting out with a fundamentally incorrect assumption about how PCRE v2's memory handling works. With 08-10/10 we end up with a much easier to reason about end-state, as the API itself is actually quite simple.

Ævar Arnfjörð Bjarmason (10):
  grep/pcre2: drop needless assignment + assert() on opt->pcre2
  grep/pcre2: drop needless assignment to NULL
  grep/pcre2: correct reference to grep_init() in comment
  grep/pcre2: prepare to add debugging to pcre2_malloc()
  grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
  grep/pcre2: use compile-time PCREv2 version test
  grep/pcre2: use pcre2_maketables_free() function
  grep/pcre2: actually make pcre2 use custom allocator
  grep/pcre2: move back to thread-only PCREv2 structures
  grep/pcre2: move definitions of pcre2_{malloc,free}
 builtin/grep.c |  1 -
 grep.c         | 99 ++++++++++++++++++++++----------------------------
 grep.h         |  9 ++++-
 3 files changed, 51 insertions(+), 58 deletions(-)
-- 
2.30.0.284.gd98b1dd5eaa7
Previous: Junio C HamanoNext: Junio C Hamano
Message 9 of 42 in “Revive 'pcre2-chartables-leakfix'”
  1. 0/3 Revive 'pcre2-chartables-leakfix'Johannes Schindelin via GitGitGadget, Oct 16, 2019
  2. 2/3 grep: make PCRE2 aware of custom allocatorCarlo Marcelo Arenas Belón via GitGitGadget, Oct 16, 2019
  3. 1/3 grep: make PCRE1 aware of custom allocatorCarlo Marcelo Arenas Belón via GitGitGadget, Oct 16, 2019
  4. 3/3 grep: avoid leak of chartables in PCRE2Johannes Schindelin via GitGitGadget, Oct 16, 2019
  5. 0/3 Revive 'pcre2-chartables-leakfix'Johannes Schindelin via GitGitGadget, Oct 16, 2019
  6. 1/3 grep: make PCRE1 aware of custom allocatorCarlo Marcelo Arenas Belón via GitGitGadget, Oct 16, 2019
  7. 2/3 grep: make PCRE2 aware of custom allocatorCarlo Marcelo Arenas Belón via GitGitGadget, Oct 16, 2019
  8. Junio C HamanoOct 18, 2019
  9. 00/10 grep/pcre2: memory allocation fixesÆvar Arnfjörð Bjarmason, Feb 4, 2021
  10. Junio C HamanoFeb 10, 2021
  11. 00/10 grep/pcre2: memory allocation fixesÆvar Arnfjörð Bjarmason, Feb 18, 2021
  12. Junio C HamanoMar 4, 2021
  13. 03/10 grep/pcre2: correct reference to grep_init() in commentÆvar Arnfjörð Bjarmason, Feb 18, 2021
  14. 04/10 grep/pcre2: prepare to add debugging to pcre2_malloc()Ævar Arnfjörð Bjarmason, Feb 18, 2021
  15. 02/10 grep/pcre2: drop needless assignment to NULLÆvar Arnfjörð Bjarmason, Feb 18, 2021
  16. 01/10 grep/pcre2: drop needless assignment + assert() on opt->pcre2Ævar Arnfjörð Bjarmason, Feb 18, 2021
  17. 05/10 grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug modeÆvar Arnfjörð Bjarmason, Feb 18, 2021
  18. 06/10 grep/pcre2: use compile-time PCREv2 version testÆvar Arnfjörð Bjarmason, Feb 18, 2021
  19. Junio C HamanoMar 4, 2021
  20. 07/10 grep/pcre2: use pcre2_maketables_free() functionÆvar Arnfjörð Bjarmason, Feb 18, 2021
  21. 08/10 grep/pcre2: actually make pcre2 use custom allocatorÆvar Arnfjörð Bjarmason, Feb 18, 2021
  22. Junio C HamanoMar 4, 2021
  23. 10/10 grep/pcre2: move definitions of pcre2_{malloc,free}Ævar Arnfjörð Bjarmason, Feb 18, 2021
  24. Junio C HamanoMar 4, 2021
  25. 09/10 grep/pcre2: move back to thread-only PCREv2 structuresÆvar Arnfjörð Bjarmason, Feb 18, 2021
  26. Junio C HamanoMar 4, 2021
  27. 01/10 grep/pcre2: drop needless assignment + assert() on opt->pcre2Ævar Arnfjörð Bjarmason, Feb 4, 2021
  28. 02/10 grep/pcre2: drop needless assignment to NULLÆvar Arnfjörð Bjarmason, Feb 4, 2021
  29. 03/10 grep/pcre2: correct reference to grep_init() in commentÆvar Arnfjörð Bjarmason, Feb 4, 2021
  30. 04/10 grep/pcre2: prepare to add debugging to pcre2_malloc()Ævar Arnfjörð Bjarmason, Feb 4, 2021
  31. 05/10 grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug modeÆvar Arnfjörð Bjarmason, Feb 4, 2021
  32. Johannes SchindelinFeb 10, 2021
  33. 06/10 grep/pcre2: use compile-time PCREv2 version testÆvar Arnfjörð Bjarmason, Feb 4, 2021
  34. 08/10 grep/pcre2: actually make pcre2 use custom allocatorÆvar Arnfjörð Bjarmason, Feb 4, 2021
  35. Johannes SchindelinFeb 10, 2021
  36. 07/10 grep/pcre2: use pcre2_maketables_free() functionÆvar Arnfjörð Bjarmason, Feb 4, 2021
  37. Johannes SchindelinFeb 10, 2021
  38. Junio C HamanoMar 4, 2021
  39. 09/10 grep/pcre2: move back to thread-only PCREv2 structuresÆvar Arnfjörð Bjarmason, Feb 4, 2021
  40. 10/10 grep/pcre2: move definitions of pcre2_{malloc,free}Ævar Arnfjörð Bjarmason, Feb 4, 2021
  41. Johannes SchindelinFeb 10, 2021
  42. 3/3 grep: avoid leak of chartables in PCRE2Carlo Marcelo Arenas Belón via GitGitGadget, Oct 16, 2019

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.