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

[PATCH 5/4] meson: turn on NO_MMAP when building with LSan

From
Jeff King <peff@peff.net>
Date
Mar 6, 2026, 16:25 UTC
Message-ID
<20260306162513.GB3483423@coredump.intra.peff.net>
In-Reply-To
<796110ee-d795-4445-9d82-7026370a88cf@intel.com>
On Fri, Mar 06, 2026 at 01:17:24AM -0800, Jacob Keller wrote:
Show 14 quoted lines
> > diff --git a/Makefile b/Makefile
> > index f3264d0a37..4cf1afd395 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -1600,6 +1600,7 @@ BASIC_CFLAGS += -DSHA1DC_FORCE_ALIGNED_ACCESS
> >  endif
> >  ifneq ($(filter leak,$(SANITIZERS)),)
> >  BASIC_CFLAGS += -O0
> > +NO_MMAP = CatchMapLeaks
> >  SANITIZE_LEAK = YesCompiledWithIt
> >  endif
> >  ifneq ($(filter address,$(SANITIZERS)),)
> 
> Should this patch also affect the meson.build?
Ugh, yes.

I don't think we use meson in the CI sanitizer builds (which is where I'd guess most leak-checking happens), but the two systems should remain consistent.

Patch below (that can go on top or be squashed into 4/4).
> Also I think this might be somewhat less flexible than Make since you
> can't forcibly enable mmap even with sanitizers enabled. I suppose thats
> not a big deal since enabling sanitizers already has a high cost.

I don't pay much attention to the meson support, but yeah, it looks like there's no equivalent to tweak the NO_MMAP knob independently there. I doubt anybody is clamoring for it.

-- >8 --
Subject: [PATCH] meson: turn on NO_MMAP when building with LSan

The previous commit taught the Makefile to turn on NO_MMAP in this instance. We should do the same with meson for consistency. We already do this for ASan builds, so we can just tweak one conditional.

Signed-off-by: Jeff King <peff@peff.net>
---
Tested and confirmed this finds the test failures fixed by the earlier
patches.
 meson.build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index 4b536e0124..4e13afbb41 100644
--- a/meson.build
+++ b/meson.build
@@ -1426,7 +1426,7 @@ else
     'getpagesize' : [],
   }
 
-  if get_option('b_sanitize').contains('address')
+  if get_option('b_sanitize').contains('address') or get_option('b_sanitize').contains('leak')
     libgit_c_args += '-DNO_MMAP'
     libgit_sources += 'compat/mmap.c'
   else
-- 
2.53.0.791.g8baeb4ea4d
Previous: Jacob KellerNext: Ramsay Jones
Message 11 of 25 in “memory leak when cloning a repository”
  1. Jacob KellerMar 5, 2026
  2. Jeff KingMar 5, 2026
  3. 0/4 plugging some mmap() leaksJeff King, Mar 5, 2026
  4. 1/4 check_connected(): delay opening new_packJeff King, Mar 5, 2026
  5. Jacob KellerMar 5, 2026
  6. 2/4 check_connected(): fix leak of pack-index mmapJeff King, Mar 5, 2026
  7. Jacob KellerMar 5, 2026
  8. 3/4 pack-revindex: avoid double-loading .rev filesJeff King, Mar 5, 2026
  9. 4/4 Makefile: turn on NO_MMAP when building with LSanJeff King, Mar 5, 2026
  10. Jacob KellerMar 6, 2026
  11. 5/4 meson: turn on NO_MMAP when building with LSanJeff King, Mar 6, 2026
  12. Ramsay JonesMar 6, 2026
  13. Junio C HamanoMar 7, 2026
  14. 5/4 object-file: fix mmap() leak in odb_source_loose_read_object_stream()Jeff King, Mar 7, 2026
  15. Junio C HamanoMar 7, 2026
  16. Patrick SteinhardtMar 10, 2026
  17. Ramsay JonesMar 6, 2026
  18. Jeff KingMar 6, 2026
  19. Ramsay JonesMar 6, 2026
  20. Junio C HamanoMar 6, 2026
  21. Ramsay JonesMar 6, 2026
  22. Junio C HamanoMar 6, 2026
  23. Ramsay JonesMar 6, 2026
  24. Junio C HamanoMar 7, 2026
  25. Jacob KellerMar 5, 2026

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.