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

[PATCH 2/2] Do not call release_pack_memory in malloc wrappers when GIT_TRACE is used

From
Johannes Sixt <j6t@kdbg.org>
Date
May 8, 2010, 15:18 UTC
Message-ID
<201005081718.07355.j6t@kdbg.org>
In-Reply-To
<201005081713.49937.j6t@kdbg.org>

This avoids a potential race condition when async procedures are implemented as threads where release_pack_memory() can be called from different threads without locking under memory pressure.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
---
 It is worthwhile to have this in np/malloc-threading (and in maint or
 master) even if js/async-thread is not in master, yet, because on
 Windows we already have async procedures implemented in threads.
 trace.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/trace.c b/trace.c
index 4229ae1..1e560cb 100644
--- a/trace.c
+++ b/trace.c
@@ -25,6 +25,10 @@
 #include "cache.h"
 #include "quote.h"
 
+void do_nothing(size_t unused)
+{
+}
+
 /* Get a trace file descriptor from GIT_TRACE env variable. */
 static int get_trace_fd(int *need_close)
 {
@@ -72,6 +76,7 @@ void trace_printf(const char *fmt, ...)
 	if (!fd)
 		return;
 
+	set_try_to_free_routine(do_nothing);	/* is never reset */
 	strbuf_init(&buf, 64);
 	va_start(ap, fmt);
 	len = vsnprintf(buf.buf, strbuf_avail(&buf), fmt, ap);
@@ -103,6 +108,7 @@ void trace_argv_printf(const char **argv, const char *fmt, ...)
 	if (!fd)
 		return;
 
+	set_try_to_free_routine(do_nothing);	/* is never reset */
 	strbuf_init(&buf, 64);
 	va_start(ap, fmt);
 	len = vsnprintf(buf.buf, strbuf_avail(&buf), fmt, ap);
-- 
1.7.1.64.ga1799.dirty
Previous: Johannes SixtNext: Jakub Narebski
Message 4 of 16 in “What's cooking in git.git (May 2010, #01; Sun, 2)”
  1. Junio C HamanoMay 2, 2010
  2. Johannes SixtMay 2, 2010
  3. 1/2 Have set_try_to_free_routine return the previous routineJohannes Sixt, May 8, 2010
  4. 2/2 Do not call release_pack_memory in malloc wrappers when GIT_TRACE is usedJohannes Sixt, May 8, 2010
  5. Jakub NarebskiMay 3, 2010
  6. Will PalmerMay 3, 2010
  7. jn/shortlog (Re: What's cooking in git.git (May 2010, #01; Sun, 2))Jonathan Nieder, May 4, 2010
  8. Jonathan NiederMay 4, 2010
  9. 0/5 jn/shortlogJonathan Nieder, May 4, 2010
  10. 1/5 Documentation/shortlog: scripted users should not rely on implicit HEADJonathan Nieder, May 4, 2010
  11. 2/5 t4201 (shortlog): guard setup with test_expect_successJonathan Nieder, May 4, 2010
  12. 3/5 t4201 (shortlog): Test output format with multiple authorsJonathan Nieder, May 4, 2010
  13. 4/5 shortlog: Document and test --format optionJonathan Nieder, May 4, 2010
  14. 5/5 pretty: Respect --abbrev optionJonathan Nieder, May 4, 2010
  15. Jonathan NiederMay 4, 2010
  16. Clemens BuchacherMay 8, 2010

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.